次の方法で共有


Azure Monitor でデータ収集ルール (DCR) を作成する

Azure Monitor でデータ収集規則 (DCR) を作成するには、複数の方法があります。 場合によっては、Azure Monitor によって、Azure portal で構成した設定に従って DCR が作成および管理されます。 これらのケースの一部では、ユーザーは自分が DCR を使っていることを認識していない場合さえあります。 しかし、それ以外のシナリオでは、独自の DCR を作成するか、JSON で定義を直接操作して既存のものを編集することが必要な場合があります。 この記事では、DCR を作成するさまざまな方法と、DCR の編集とトラブルシューティングに関する推奨事項について説明します。

Note

この記事では、DCR 自体を作成および編集する方法について説明します。 データ収集ルールの関連付けの作成と編集については、データ収集ルールの関連付けの作成と管理に関する記事をご覧ください。

アクセス許可

DCR と DCR の関連付けを作成するには、次のアクセス許可が必要です。

組み込みのロール スコープ 理由
Monitoring Contributor
  • サブスクリプションおよび/または
  • リソース グループおよび/または
  • 既存の DCR
DCR を作成または編集し、マシンにルールを割り当て、関連付けをデプロイします。
Virtual Machine Contributor
Azure Connected Machine のリソース管理者
  • 仮想マシン、仮想マシン スケール セット
  • Azure Arc 対応サーバー
VM (仮想マシン) にエージェント拡張機能をデプロイします。
アクション Microsoft.Resources/deployments/ を含む任意のロール*
  • サブスクリプションおよび/または
  • リソース グループおよび/または
  • 既存の DCR
Azure Resource Manager テンプレートをデプロイする。

重要

格納先の Log Analytics ワークスペースまたは Azure Monitor ワークスペースと同じリージョンに DCR を作成します。 DCR は、テナント内の任意のサブスクリプションまたはリソース グループのマシンまたはコンテナーに関連付けることができます。 テナント間でデータを送信するには、まず Azure Lighthouse を有効にする必要があります。

Azure portal を使用して DCR を作成または編集する

Azure portal には、特定のシナリオで DCR を作成するための簡素化されたエクスペリエンスがあります。 この方法を使うと、DCR の構造を理解する必要はありませんが、実行できる構成が制限される場合があり、変換などの高度な機能を実装するために後で DCR 定義を編集することが必要になる可能性があります。 エクスペリエンスはシナリオごとに異なるため、次の表で説明するように、使っている特定のシナリオのドキュメントを参照してください。

シナリオ 説明
VM 分析情報の有効化 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 を作成する」をご覧ください。

DCR の定義

その作成方法に関係なく、各 DCR には標準の JSON スキーマに従う定義があります。 Azure portal 以外の方法を使って DCR を作成または編集するには、その JSON 定義を直接操作する必要があります。 Azure portal には必要に応じて DCR を構成する方法がないため、一部のシナリオでは JSON 定義を操作する必要があります。

Azure portal で [概要] メニューの [JSON ビュー] をクリックして、DCR の JSON を表示できます。

Azure portal で DCR の JSON を表示するオプションを示すスクリーンショット。

[API バージョン] ドロップダウンで、API の最新バージョンが選ばれていることを確認してください。 そうでない場合、一部の JSON が表示されない可能性があります。

Azure portal での DCR の JSON を示すスクリーンショット。

DCR REST API を呼び出して、DCR の JSON を取得することもできます。 たとえば、次の PowerShell スクリプトは、DCR の JSON を取得してファイルに保存します。

$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

Note

PowerShell の Get-AzDataCollectionRule コマンドレットまたは Azure CLI の az monitor data-collection rule show コマンドを使って DCR の詳細を取得できますが、それらでは編集に必要な形式の JSON は提供されません。 代わりに、例で示されているように、PowerShell または CLI を使って REST API を呼び出します。

JSON を使用して DCR を作成または編集する

既存の DCR を編集するだけでなく、いくつかの一般的なシナリオ用の JSON が提供されているサンプル DCR のいずれかを使って、新しい DCR を作成できます。 Azure Monitor のデータ収集ルールの構造に関する情報を使用して、特定の環境と要件に合わせて JSON ファイルを変更します。

DCR の定義が完成したら、Azure portal、CLI、PowerShell、API、または ARM テンプレートを使って、それを Azure Monitor にデプロイできます。

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'

Note

PowerShell または CLI のコマンドを使って DCR を作成および編集することもできますが、API と ARM の方法では、コンパイル エラーがある場合にいっそう詳細なエラー メッセージが提供されます。

次の例の DCR では、格納先の Log Analytics ワークスペースに存在しないテーブル名が指定されています。 PowerShell のコマンドでは一般的なエラー メッセージが返されますが、API 呼び出しからは正確なエラーが指定された詳細なエラー メッセージが返されます。

PowerShell コマンド使用時の DCR のエラー メッセージを示すスクリーンショット。

API 使用時の DCR のエラー メッセージを示すスクリーンショット。

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 でそれを再デプロイできます。

  1. Azure portal で変更する DCR を選んで、[テンプレートのエクスポート] を選びます。 その後、[デプロイ] をクリックして、同じテンプレートを再デプロイします。

    Azure portal のデータ収集ルールの [テンプレートのエクスポート] オプションを示すスクリーンショット。

  2. [テンプレートの編集] をクリックして、DCR の編集可能なバージョンの JSON を開きます。 パラメーターの値は変更しないでください。

    Azure portal のデータ収集ルールの [テンプレートの編集] オプションを示すスクリーンショット。

  3. DCR に必要な変更を行った後、[保存] をクリックします。

    Azure portal でのデータ収集ルールの編集可能な JSON を示すスクリーンショット。

  4. 新しい DCR を作成する場合は、name パラメーターを変更します。 それ以外の場合は、パラメーターは変更しません。 変更したテンプレートをデプロイするには [確認と作成] をクリックし、新しい DCR を作成するには [作成] をクリックします。

    Azure portal のデータ収集ルールの [確認と作成] オプションを示すスクリーンショット。

  5. DCR がエラーなしで有効な場合、デプロイは成功し、DCR は新しい構成で更新されます。 [リソースに移動] をクリックして、変更した DCR を開きます。

    Azure portal でのデータ収集ルールの成功したデプロイを示すスクリーンショット。

  6. DCR にコンパイル エラーがある場合は、デプロイが失敗したことを示すメッセージを受け取ります。 [エラーの詳細] をクリックしてから [操作の詳細] をクリックして、エラーの詳細を表示します。 [再デプロイ] をクリックしてから [テンプレートの編集] を再びクリックし、DCR に必要な変更を行った後、それを保存してもう一度デプロイします。

    Azure portal でのデータ収集ルールの失敗したデプロイを示すスクリーンショット。

データの収集の確認とトラブルシューティング

DCR をインストールした後、変更が有効になり、更新された DCR でデータが収集されるまで、数分かかる場合があります。 データが収集されない場合、問題の根本原因の特定が難しいことがあります。 DCR 監視機能を使います。これには、トラブルシューティングに役立つメトリックとログが含まれます。

DCR メトリックはすべての DCR に対して自動的に収集され、他の Azure リソースのプラットフォーム メトリックのように、メトリック エクスプローラーを使って分析できます。 データ処理が成功しない場合に詳細なエラー情報を得るには、DCR エラー ログを有効にします。

収集されているデータが表示されない場合は、次の基本的な手順に従って問題のトラブルシューティングを行います。

  1. Logs Ingestion Bytes per MinLogs 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 テーブルで、ログに記録されている可能性があるインジェスト エラーを調べます。 これにより、問題の根本原因を特定するための詳細が提供されます。

次のステップ