Azure Monitor でデータ収集規則 (DCR) を作成するには、複数の方法があります。 場合によっては、Azure Monitor によって、Azure portal で構成した設定に従って DCR が作成および管理されます。 これらのケースの一部では、ユーザーは自分が DCR を使っていることを認識していない場合さえあります。 しかし、それ以外のシナリオでは、独自の DCR を作成するか、JSON で定義を直接操作して既存のものを編集することが必要な場合があります。 この記事では、DCR を作成するさまざまな方法と、DCR の編集とトラブルシューティングに関する推奨事項について説明します。
注
この記事では、DCR 自体を作成および編集する方法について説明します。 データ収集ルールの関連付けの作成と編集については、データ収集ルールの関連付けの作成と管理に関する記事をご覧ください。
権限
DCR と DCR の関連付けを作成するには、次のアクセス許可が必要です。
| 組み込みロール | スコープ | 理由 |
|---|---|---|
| モニタリング貢献者 |
|
DCR を作成または編集し、マシンにルールを割り当て、関連付けをデプロイします。 |
|
仮想マシン共同作成者 Azure Connected Machine のリソース管理者 |
|
VM (仮想マシン) にエージェント拡張機能をデプロイします。 |
| アクション Microsoft.Resources/deployments/ を含む任意のロール* |
|
Azure Resource Manager テンプレートをデプロイする。 |
重要
格納先の Log Analytics ワークスペースまたは Azure Monitor ワークスペースと同じリージョンに DCR を作成します。 DCR は、テナント内の任意のサブスクリプションまたはリソース グループのマシンまたはコンテナーに関連付けることができます。 テナント間でデータを送信するには、まず Azure Lighthouse を有効にする必要があります。
Azure portal を使用して DCR を作成または編集する
Azure portal には、特定のシナリオで DCR を作成するための簡素化されたエクスペリエンスがあります。 この方法を使うと、DCR の構造を理解する必要はありませんが、実行できる構成が制限される場合があり、変換などの高度な機能を実装するために後で DCR 定義を編集することが必要になる可能性があります。 エクスペリエンスはシナリオごとに異なるため、次の表で説明するように、使っている特定のシナリオのドキュメントを参照してください。
| シナリオ | 説明 |
|---|---|
| VM Insights を有効にする | VM で VM Insights を有効にすると、Azure Monitor エージェントがインストールされ、DCR が作成されて、その仮想マシンに関連付けられます。 この DCR は、定義済みのパフォーマンス カウンターのセットを収集するものなので、変更しないでください。 「VM Insights を有効にする」をご覧ください。 |
| VM からクライアント データを収集する | Azure portal でガイド付きインターフェイスを使って DCR を作成し、VM のクライアント オペレーティング システムのさまざまなデータ ソースを選びます。 たとえば、Windows イベント、Syslog イベント、テキスト ログなどがあります。 必要な場合は Azure Monitor エージェントが自動的にインストールされ、DCR と選択した各 VM の間に関連付けが作成されます。 Azure Monitor エージェントを使用してデータを収集するに関する記事をご覧ください。 |
| メトリック エクスポート | Azure portal でガイド付きインターフェイスを使って DCR を作成し、さまざまなリソースの種類のメトリックを選んで収集します。 DCR と選んだ各リソースの間に関連付けが作成されます。 「メトリック エクスポート用のデータ収集ルール (DCR) を作成する」をご覧ください。 |
| テーブルの作成 | Azure portal を使って Log Analytics ワークスペースに新しいテーブルを作成するとき、Azure Monitor が DCR の作成に使う変換などのサンプル データをアップロードします。これは、Logs Ingestion API で使用できます。 この DCR は、Azure portal では変更できませんが、この記事で説明されている方法のいずれかを使って変更できます。 「カスタム テーブルを作成する」をご覧ください。 |
| Kubernetes の監視 | Kubernetes クラスターを監視するには、ログについては Container Insights を、メトリックについては Prometheus を有効にします。 それぞれの DCR が作成されて、クラスター内の Azure Monitor エージェントのコンテナー化されたバージョンに関連付けられます。 変換を追加するには、Container Insights DCR の変更が必要になる場合があります。 「Kubernetes クラスターの監視を有効にする」と「Container Insights でのデータ変換」をご覧ください。 |
| ワークスペース変革 DCR | ワークスペース変換 DCR では、DCR をまだ使っていないデータ収集シナリオのための変換を提供します。 この DCR を作成するには、Azure portal を使って特定のテーブルの変換を作成します。 「ワークスペース変換 DCR を作成する」をご覧ください。 |
JSON を使用して DCR を作成または編集する
既存の DCR を編集するだけでなく、いくつかの一般的なシナリオ用の JSON が提供されているサンプル DCR のいずれかを使って、新しい DCR を作成できます。 Azure Monitor のデータ収集ルールの構造に関する情報を使用して、特定の環境と要件に合わせて JSON ファイルを変更します。
Warnung
Azure portal を使用して既存のデータ収集ルール (DCR) を編集すると、ポータルでこれらの機能がサポートされていない場合は、DCR の JSON を直接編集することによって行われた変更が上書きされます。 たとえば、変換を ポータルで作成 できないデータ ソースの DCR に変換を追加した場合、その後ポータルで DCR を編集すると、その変換は削除されます。 この場合は、JSON を直接編集して、引き続き DCR に変更を加える必要があります。
DCR の定義が完成したら、Azure portal、CLI、PowerShell、API、または ARM テンプレートを使って、それを Azure Monitor にデプロイできます。
ヒント
DCR の JSON 定義を表示するには、DCR 定義の表示を参照してください。
CLI を使用して DCR を作成または編集する
az monitor data-collection rule create コマンドを使用して、JSON ファイルから DCR を作成します。 この同じコマンドを使って、既存の 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テーブルで、ログに記録されている可能性があるインジェスト エラーを調べます。 これにより、問題の根本原因を特定するための詳細が提供されます。