Создание правил сбора данных (DCR) в Azure Monitor
Существует несколько методов для создания правила сбора данных (DCR) в Azure Monitor. В некоторых случаях Azure Monitor создаст DCR и управляет им в соответствии с параметрами, настроенными в портал Azure. Вы даже не понимаете, что работаете с DCR в некоторых из этих случаев. Однако для других сценариев может потребоваться создать собственные контроллеры домена или изменить существующие, напрямую работая с их определением в ФОРМАТЕ JSON. В этой статье описаны различные методы создания DCR и рекомендаций по редактированию и устранению неполадок.
Примечание.
В этой статье описывается создание и изменение самого DCR. Сведения о создании и изменении связей правил сбора данных см. в статье "Создание сопоставлений правил сбора данных и управление ими".
Разрешения
Для создания сопоставлений контроллеров домена и DCR требуются следующие разрешения:
Встроенная роль | Области | Причина |
---|---|---|
Monitoring Contributor (Участник мониторинга) |
|
Создайте или измените контроллеры домена, назначьте правила компьютеру, разверните связи. |
Участник виртуальной машины Администратор ресурсов Azure Connected Machine |
|
Развертывание расширений агента на виртуальной машине (виртуальной машине). |
Любая роль, которая включает действие Microsoft.Resources/deployments/* |
|
Развертывание шаблонов 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 в меню "Обзор".
Убедитесь, что в раскрывающемся списке версии API выбрана последняя версия API. Если нет, некоторые из JSON могут не отображаться.
Вы также можете получить 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
При создании или изменении 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.
Выберите DCR, который нужно изменить в портал Azure, и выберите шаблон экспорта. Затем нажмите кнопку "Развернуть" , чтобы повторно развернуть один и тот же шаблон.
Щелкните "Изменить шаблон ", чтобы открыть редактируемую версию JSON для DCR. Не изменяйте значения параметров.
Внесите все необходимые изменения в DCR и нажмите кнопку "Сохранить".
Если вы хотите создать новый DCR, измените параметр имени. В противном случае оставьте параметры неизменными. Нажмите кнопку "Рецензирование" и "Создать", чтобы развернуть измененный шаблон и создать новый DCR.
Если DCR действителен без ошибок, развертывание будет выполнено успешно, и DCR будет обновлен с новой конфигурацией. Нажмите кнопку " Перейти к ресурсу ", чтобы открыть измененный DCR.
Если DCR содержит ошибки компиляции, вы получите сообщение о сбое развертывания. Щелкните сведения об ошибке и сведения об операции, чтобы просмотреть сведения об ошибке. Нажмите кнопку Повторное развертывание и снова измените шаблон , чтобы внести необходимые изменения в DCR, а затем сохранить и развернуть его еще раз.
Проверка и устранение неполадок сбора данных
После установки DCR может потребоваться несколько минут, чтобы изменения вступили в силу и данные будут собираться с обновленным DCR. Если вы не видите собранных данных, это может быть трудно определить первопричину проблемы. Используйте функции мониторинга DCR, которые включают метрики и журналы для устранения неполадок.
Метрики DCR собираются автоматически для всех контроллеров домена, и их можно проанализировать с помощью обозревателя метрик, таких как метрики платформы для других ресурсов Azure. Включите журналы ошибок DCR, чтобы получить подробные сведения об ошибках при успешной обработке данных.
Если вы не видите собранные данные, выполните следующие основные действия, чтобы устранить проблему.
- Проверьте такие метрики, как
Logs Ingestion Bytes per Min
иLogs Rows Received per Min
убедитесь, что данные достигают Azure Monitor. Если нет, проверьте источник данных, чтобы убедиться, что он отправляет данные должным образом. - Проверьте
Logs Rows Dropped per Min
, удаляются ли строки. Это может не указывать на ошибку, так как строки могут быть удалены преобразованием. Если удаленные строкиLogs Rows Dropped per Min
совпадают с тем, что данные не будут приема в рабочей области. Проверьте наличиеLogs Transformation Errors per Min
ошибок преобразования. - Проверьте
Logs Transformation Errors per Min
наличие ошибок при преобразовании, примененных к входящим данным. Это может быть связано с изменениями структуры данных или самого преобразования. - Проверьте таблицу
DCRLogErrors
для любых ошибок приема, которые могли быть зарегистрированы. Это может предоставить дополнительные сведения о том, как определить первопричину проблемы.