Создание правил сбора данных (DCR) с помощью JSON

Существует несколько методов для создания правила сбора данных (DCR) в Azure Monitor. Во многих сценариях можно использовать портал Azure для создания DCR без понимания структуры определения DCR. Однако для других сценариев, возможно, потребуется создать собственные DCR или изменить существующие, напрямую работая с их определением в формате JSON. Это может быть для использования расширенных функций, таких как преобразования, или для использования инструментов командной строки для создания и управления DCR.

Предупреждение

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

Разрешения

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

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

Это важно

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

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

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

Сведения об определении JSON для DCR см. в разделе "Просмотр определения DCR".

Создание или изменение DCR

После определения DCR его можно развернуть в Azure Monitor с помощью любого из следующих методов. Это тот же метод для создания нового DCR или изменения существующего.

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

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

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), вам гарантировано, что у вас всегда будет доступ к последней версии определения 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 правила сбора данных в портале

  4. Если вы хотите создать новый DCR, измените параметр имени. В противном случае оставьте параметры неизменными. Нажмите Обзор + Создать для развертывания измененного шаблона и Создать для создания нового DCR.

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

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

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

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

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

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

После установки 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 на ошибки загрузки, которые могли быть зарегистрированы. Это может предоставить дополнительные сведения о том, как определить первопричину проблемы.

Дальнейшие действия