Azure Monitor でデータ収集規則 (DCR) を作成するには、複数の方法があります。 多くのシナリオでは、 Azure portal を使用 して、DCR 定義の構造を理解せずに DCR を作成できます。 しかし、それ以外のシナリオでは、独自の DCR を作成するか、JSON で定義を直接操作して既存のものを編集することが必要な場合があります。 これは、 変換 などの高度な機能を使用したり、コマンド ライン ツールを使用して DCR を作成および管理したりするために使用できます。
Warnung
Azure portal を使用して既存のデータ収集ルール (DCR) を編集すると、ポータルでこれらの機能がサポートされていない場合は、DCR の JSON を直接編集することによって行われた変更が上書きされます。 たとえば、変換を ポータルで作成 できないデータ ソースの DCR に変換を追加した場合、その後ポータルで DCR を編集すると、その変換は削除されます。 この場合は、JSON を直接編集して、引き続き DCR に変更を加える必要があります。
権限
DCR を作成するには、次のアクセス許可が必要です。
| 組み込みロール | スコープ | 理由 |
|---|---|---|
| モニタリング貢献者 |
|
DCR を作成または編集し、マシンにルールを割り当て、関連付けをデプロイします。 |
| アクション Microsoft.Resources/deployments/ を含む任意のロール* |
|
Azure Resource Manager テンプレートをデプロイする。 |
重要
格納先の Log Analytics ワークスペースまたは Azure Monitor ワークスペースと同じリージョンに DCR を作成します。 DCR は、テナント内の任意のサブスクリプションまたはリソース グループのマシンまたはコンテナーに関連付けることができます。 テナント間でデータを送信するには、まず Azure Lighthouse を有効にする必要があります。
DCR 定義
最初から DCR 定義を作成する代わりに、Azure portal で作成した DCR から始めて、その JSON 定義をダウンロードして変更します。 または、いくつかの一般的なシナリオで JSON を提供する サンプル DCR のいずれかを 使用できます。 Azure Monitor のデータ収集ルールの構造に関する情報を使用して、特定の環境と要件に合わせて JSON ファイルを変更します。
DCR の JSON 定義を表示するには、DCR 定義の表示を参照してください。
DCR を作成または編集する
DCR の定義が完成したら、次のいずれかの方法を使用して、それを Azure Monitor にデプロイできます。 新しい DCR を作成するか、既存の DCR を編集するのと同じ方法です。
CLI を使用して DCR を作成または編集する
az monitor data-collection rule create コマンドを使用して、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 の編集とテストの戦略
JSON 定義を使って DCR を作成または編集するとき、必要な機能を実現するために複数の更新を行うことが必要になる場合がよくあります。 DCR を更新し、意図した結果にならない場合にトラブルシューティングを行い、追加の更新を行うための効率的な方法が必要です。 特に、DCR に変換を追加する場合は、クエリが意図したとおりに動作していることを検証する必要があるため、このことが当てはまります。 Azure portal では JSON を直接編集できませんが、次のようないくつかの戦略を使用できます。
DCR のソースとしてローカル ファイルを使用する
作成および編集する DCR のソースとしてローカル JSON ファイルを使った場合は、常に最新バージョンの DCR 定義にアクセスできます。 これは、GitHub や Azure DevOps などのバージョン管理ツールを使って変更を管理する場合に最適です。 VS Code などのエディターを使って DCR の変更を行った後、コマンド ライン ツールを使って Azure Monitor の DCR を更新することもできます。
次の PowerShell スクリプトの例を使うと、ソース ファイルから DCR に変更をプッシュできます。 これにより、Azure Monitor に送信される前に、ソース ファイルが有効な JSON であることが検証されます。
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 スクリプトの例を使うと、Azure Monitor の既存の DCR を編集できます。 このスクリプトは、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
ARM テンプレートを使用して DCR をその場で編集する
Azure portal で編集を完全に実行したい場合は、テンプレートのエクスポート機能を使って、DCR の ARM テンプレートを取得できます。 その後、JSON で定義を変更し、Azure portal でそれを再デプロイできます。
Azure portal で変更する DCR を選んで、[テンプレートのエクスポート] を選びます。 その後、[デプロイ] をクリックして、同じテンプレートを再デプロイします。
[テンプレートの編集] をクリックして、DCR の編集可能なバージョンの JSON を開きます。 パラメーターの値は変更しないでください。
DCR に必要な変更を行った後、[保存] をクリックします。
新しい DCR を作成する場合は、name パラメーターを変更します。 それ以外の場合は、パラメーターは変更しません。 変更したテンプレートをデプロイするには [確認と作成] をクリックし、新しい 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テーブルで、ログに記録されている可能性があるインジェスト エラーを調べます。 これにより、問題の根本原因を特定するための詳細が提供されます。