Поделиться через


Создание правил сбора данных (DCR) в Azure Monitor

Существует несколько методов для создания правила сбора данных (DCR) в Azure Monitor. В некоторых случаях Azure Monitor создаст DCR и управляет им в соответствии с параметрами, настроенными в портал Azure. Вы даже не понимаете, что работаете с DCR в некоторых из этих случаев. Однако для других сценариев может потребоваться создать собственные контроллеры домена или изменить существующие, напрямую работая с их определением в ФОРМАТЕ JSON. В этой статье описаны различные методы создания DCR и рекомендаций по редактированию и устранению неполадок.

Примечание.

В этой статье описывается создание и изменение самого DCR. Сведения о создании и изменении связей правил сбора данных см. в статье "Создание сопоставлений правил сбора данных и управление ими".

Разрешения

Для создания сопоставлений контроллеров домена и DCR требуются следующие разрешения:

Встроенная роль Области Причина
Monitoring Contributor (Участник мониторинга)
  • Подписка и (или)
  • Группа ресурсов и/или
  • Существующий DCR
Создайте или измените контроллеры домена, назначьте правила компьютеру, разверните связи.
Участник виртуальной машины
Администратор ресурсов Azure Connected Machine
  • Виртуальные машины и масштабируемые наборы виртуальных машин
  • Серверы с поддержкой Azure Arc
Развертывание расширений агента на виртуальной машине (виртуальной машине).
Любая роль, которая включает действие Microsoft.Resources/deployments/*
  • Подписка и (или)
  • Группа ресурсов и/или
  • Существующий DCR
Развертывание шаблонов Azure Resource Manager.

Внимание

Создайте DCR в том же регионе, что и рабочая область Log Analytics или рабочая область Azure Monitor. Вы можете связать DCR с компьютерами или контейнерами из любой подписки или группы ресурсов в клиенте. Чтобы отправлять данные между клиентами, необходимо сначала включить Azure Lighthouse.

Создание или изменение DCR с помощью портал Azure

Портал Azure предоставляет упрощенный интерфейс для создания DCR для конкретных сценариев. С помощью этого метода вам не нужно понимать структуру DCR, хотя вы можете быть ограничены в конфигурации, которую можно выполнить, и может потребоваться позже изменить определение DCR, чтобы реализовать расширенную функцию, например преобразование. Интерфейс будет отличаться для каждого сценария, поэтому ознакомьтесь с документацией по конкретному сценарию, с которым вы работаете, как описано в следующей таблице.

Сценарий Description
Включение аналитики виртуальных машин При включении Службы "Аналитика виртуальных машин" на виртуальной машине устанавливается агент Azure Monitor, а DCR создается и связан с виртуальной машиной. Этот DCR собирает предопределенный набор счетчиков производительности и не должен быть изменен. См. раздел "Включить аналитику виртуальных машин".
Сбор данных клиента из виртуальной машины Создайте DCR в портал Azure с помощью интерактивного интерфейса для выбора различных источников данных из клиентской операционной системы виртуальной машины. Примерами являются события Windows, события системного журнала и текстовые журналы. При необходимости агент Azure Monitor устанавливается автоматически, а связь создается между DCR и каждой выбранной виртуальной машиной. См. статью "Сбор данных с помощью агента Azure Monitor".
Экспорт метрик Создайте DCR в портал Azure с помощью интерактивного интерфейса для выбора метрик различных типов ресурсов для сбора. Связь создается между DCR и каждым выбранном ресурсом. См. раздел "Создание правила сбора данных" для экспорта метрик.
Создание таблицы При создании новой таблицы в рабочей области Log Analytics с помощью портал Azure вы отправляете примеры данных, которые Azure Monitor использует для создания DCR, включая преобразование, которое можно использовать с API приема журналов. Этот DCR нельзя изменить в портал Azure, но изменить его можно с помощью любого из методов, описанных в этой статье. См. статью "Создание настраиваемой таблицы".
Мониторинг Kubernetes Чтобы отслеживать кластер Kubernetes, включите Службу Аналитики контейнеров для журналов и Prometheus для метрик. DCR для каждого создается и связывается с контейнерной версией агента Azure Monitor в кластере. Чтобы добавить преобразование, может потребоваться изменить DCR аналитики контейнеров. Сведения о включении мониторинга для кластеров Kubernetes и преобразований данных в аналитике контейнеров.
DCR преобразования рабочей области Контроллеры контроллера домена преобразования рабочей области предоставляют преобразования для сценариев сбора данных, которые еще не используют контроллеры домена. Этот DCR можно создать с помощью портал Azure для создания преобразования для определенной таблицы. См. раздел "Создание преобразования рабочей области" DCR.

Определение DCR

Независимо от того, как он создан, каждый DCR имеет определение, которое следует стандартной схеме JSON. Чтобы создать или изменить DCR с помощью метода, отличного от портал Azure, необходимо работать непосредственно с его определением JSON. Для некоторых сценариев необходимо работать с определением JSON, так как портал Azure не предоставляет способ настройки DCR по мере необходимости.

Вы можете просмотреть JSON для DCR в портал Azure, щелкнув представление JSON в меню "Обзор".

Снимок экрана: параметр просмотра JSON для DCR в портал Azure.

Убедитесь, что в раскрывающемся списке версии API выбрана последняя версия API. Если нет, некоторые из JSON могут не отображаться.

Снимок экрана: JSON для DCR в портал Azure.

Вы также можете получить JSON для DCR, вызвав REST API DCR. Например, следующий скрипт PowerShell извлекает JSON для DCR и сохраняет его в файл.

$ResourceId = "<ResourceId>" # Resource ID of the DCR to edit
$FilePath = "<FilePath>" # File to store DCR content
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File -FilePath $FilePath

Примечание.

Сведения о DCR можно получить с помощью Get-AzDataCollectionRule командлета в PowerShell или az monitor data-collection rule show команде в Azure CLI, но они не предоставляют JSON в формате, который требуется для редактирования. Вместо этого используйте PowerShell или CLI для вызова REST API, как показано в примере.

Создание или изменение DCR с помощью JSON

Помимо редактирования существующего DCR, можно создать новый, используя один из примеров контроллеров домена , которые предоставляют JSON для нескольких распространенных сценариев. Используйте сведения в структуре правила сбора данных в Azure Monitor , чтобы изменить JSON-файл для конкретной среды и требований.

После определения DCR его можно развернуть в Azure Monitor с помощью портал Azure, CLI, PowerShell, API или шаблонов ARM.

Создание или изменение DCR с помощью CLI

Используйте команду az monitor data-collection rule create, чтобы создать DCR из JSON-файла. Эту же команду можно использовать для обновления существующего DCR.

az monitor data-collection rule create --location 'eastus' --resource-group 'my-resource-group' --name 'my-dcr' --rule-file 'C:\MyNewDCR.json' --description 'This is my new DCR'

Примечание.

Хотя вы можете использовать команды PowerShell или CLI для создания и редактирования DCR, методы API и ARM будут предоставлять более подробные сообщения об ошибках при компиляции.

В следующем примере DCR указывает имя таблицы, которое не существует в целевой рабочей области Log Analytics. Команда PowerShell возвращает универсальное сообщение об ошибке, но вызов API возвращает подробное сообщение об ошибке, указывающее точную ошибку.

Снимок экрана: сообщение об ошибке для DCR при использовании команды PowerShell.

Снимок экрана: сообщение об ошибке для DCR при использовании API.

Стратегии редактирования и тестирования DCR

При создании или изменении DCR с помощью его определения JSON часто требуется внести несколько обновлений, чтобы обеспечить необходимые функциональные возможности. Вам нужен эффективный метод для обновления DCR, устранения неполадок, если вы не получите ожидаемые результаты, а затем внесите дополнительные обновления. Это особенно верно, если вы добавляете преобразование в DCR, так как вам потребуется проверить, работает ли запрос должным образом. Так как вы не можете редактировать JSON непосредственно в портал Azure, ниже приведены некоторые стратегии, которые можно использовать.

Использование локального файла в качестве источника DCR

Если вы используете локальный JSON-файл в качестве источника создаваемых и редактируемых контроллеров домена, вы уверены, что у вас всегда есть доступ к последней версии определения DCR. Это идеально, если вы хотите использовать средства управления версиями, такие как GitHub или Azure DevOps для управления изменениями. Вы также можете использовать редактор, например VS Code, чтобы внести изменения в DCR, а затем использовать средства командной строки для обновления DCR в Azure Monitor, как описано выше.

Ниже приведен пример скрипта PowerShell, который можно использовать для отправки изменений в DCR из исходного файла. Это проверяет, является ли исходный файл допустимым JSON перед отправкой в Azure Monitor.

param (
    [Parameter(Mandatory = $true)][string]$ResourceId,  # Resource ID of the DCR
    [Parameter(Mandatory = $true)][string]$FilePath  # Path to the DCR JSON file to upload
)

# Read the DCR content from the file
Write-Host "Reading new DCR content from: $FilePath" -ForegroundColor Green
$DCRContent = Get-Content $FilePath -Raw

# Ensure the DCR content is valid JSON
try {
    $ParsedDCRContent = $DCRContent | ConvertFrom-Json
} catch {
    Write-Host "Invalid JSON content in file: $FilePath" -ForegroundColor Red
    exit 1
}

# Create or update the DCR in the specified resource group
Write-Host "Deploying DCR $ResourceId ..." -ForegroundColor Green
Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent		

Сохранение содержимого DCR во временный файл

Если у вас нет определения DCR в локальном файле, можно получить определение из Azure Monitor и сохранить его во временном файле. Затем вы можете изменить файл с помощью редактора, например VS Code, перед отправкой обновлений в Azure Monitor.

Ниже приведен пример скрипта PowerShell, который можно использовать для изменения существующего DCR в Azure Monitor. Скрипт получит определение DCR и сохранит его во временный файл перед запуском VS Code. После указания скрипта, который вы сохранили изменения, DCR обновляется с новым содержимым, а временный файл удаляется.

param ([Parameter(Mandatory=$true)] $ResourceId)

# Get DCR content and save it to a local file
$FilePath = "temp.dcr"
$DCR = Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method GET
$DCR.Content | ConvertFrom-Json | ConvertTo-Json -Depth 20 | Out-File $FilePath

# Open DCR in code editor
code $FilePath | Wait-Process

{ 
	#write DCR content back from the file
	$DCRContent = Get-Content $FilePath -Raw
	Invoke-AzRestMethod -Path ("$ResourceId"+"?api-version=2023-03-11") -Method PUT -Payload $DCRContent		
}

#Delete temporary file
Remove-Item $FilePath

Изменение DCR на месте с помощью шаблона ARM

Если вы хотите полностью выполнить изменения в портал Azure, можно использовать функцию экспорта для получения шаблона ARM для DCR. Затем можно изменить определение в ФОРМАТЕ JSON и повторно развернуть его в портал Azure.

  1. Выберите DCR, который нужно изменить в портал Azure, и выберите шаблон экспорта. Затем нажмите кнопку "Развернуть" , чтобы повторно развернуть один и тот же шаблон.

    Снимок экрана: параметр

  2. Щелкните "Изменить шаблон ", чтобы открыть редактируемую версию JSON для DCR. Не изменяйте значения параметров.

    Снимок экрана: параметр

  3. Внесите все необходимые изменения в DCR и нажмите кнопку "Сохранить".

    Снимок экрана: редактируемый JSON для правила сбора данных в портал Azure.

  4. Если вы хотите создать новый DCR, измените параметр имени. В противном случае оставьте параметры неизменными. Нажмите кнопку "Рецензирование" и "Создать", чтобы развернуть измененный шаблон и создать новый DCR.

    Снимок экрана, на котором показан параметр проверки и создания правила сбора данных в портал Azure.

  5. Если DCR действителен без ошибок, развертывание будет выполнено успешно, и DCR будет обновлен с новой конфигурацией. Нажмите кнопку " Перейти к ресурсу ", чтобы открыть измененный DCR.

    Снимок экрана: успешное развертывание правила сбора данных в портал Azure.

  6. Если DCR содержит ошибки компиляции, вы получите сообщение о сбое развертывания. Щелкните сведения об ошибке и сведения об операции, чтобы просмотреть сведения об ошибке. Нажмите кнопку Повторное развертывание и снова измените шаблон , чтобы внести необходимые изменения в DCR, а затем сохранить и развернуть его еще раз.

    Снимок экрана: сбой развертывания для правила сбора данных в портал Azure.

Проверка и устранение неполадок сбора данных

После установки DCR может потребоваться несколько минут, чтобы изменения вступили в силу и данные будут собираться с обновленным DCR. Если вы не видите собранных данных, это может быть трудно определить первопричину проблемы. Используйте функции мониторинга DCR, которые включают метрики и журналы для устранения неполадок.

Метрики DCR собираются автоматически для всех контроллеров домена, и их можно проанализировать с помощью обозревателя метрик, таких как метрики платформы для других ресурсов Azure. Включите журналы ошибок DCR, чтобы получить подробные сведения об ошибках при успешной обработке данных.

Если вы не видите собранные данные, выполните следующие основные действия, чтобы устранить проблему.

  1. Проверьте такие метрики, как Logs Ingestion Bytes per Min и Logs Rows Received per Min убедитесь, что данные достигают Azure Monitor. Если нет, проверьте источник данных, чтобы убедиться, что он отправляет данные должным образом.
  2. Проверьте Logs Rows Dropped per Min , удаляются ли строки. Это может не указывать на ошибку, так как строки могут быть удалены преобразованием. Если удаленные строки Logs Rows Dropped per Min совпадают с тем, что данные не будут приема в рабочей области. Проверьте наличие Logs Transformation Errors per Min ошибок преобразования.
  3. Проверьте Logs Transformation Errors per Min наличие ошибок при преобразовании, примененных к входящим данным. Это может быть связано с изменениями структуры данных или самого преобразования.
  4. Проверьте таблицу DCRLogErrors для любых ошибок приема, которые могли быть зарегистрированы. Это может предоставить дополнительные сведения о том, как определить первопричину проблемы.

Следующие шаги