Azure Monitor での DCR データ収集の監視とトラブルシューティング

この記事では、Azure Monitor でのパフォーマンスの監視とデータ収集に関連する問題のトラブルシューティングに使用できる詳細なメトリックとログについて説明します。 現在、このテレメトリは、Azure Monitor エージェントやログ インジェスト API などのデータ収集ルール (DCR) によって定義されたデータ収集シナリオで使用できます。

重要

この記事では、次のような DCR を使用するデータ収集シナリオのみについて言及します。

使用可能な監視とトラブルシューティングの情報については、他のシナリオのドキュメントを参照してください。

DCR 診断機能には、ログ処理中に出力されるメトリックとエラー ログが含まれます。 DCR メトリックは、取り込まれるデータの量、処理エラーの数と性質、およびデータ変換に関連する統計に関する情報を提供します。 DCR エラー ログは、データ処理が成功せず、データがその宛先に到達しないときにいつでも生成されます。

DCR エラー ログ

エラー ログは、データが Azure Monitor インジェスト パイプラインに到達したが、宛先に到達できない場合に生成されます。 エラー条件の例を次に示します。

  • ログ配信エラー
  • ログの構造によって変換 KQL が無効になる変換エラー
  • ログ インジェスト API 呼び出し:
    • 200/202 以外の HTTP 応答がある場合
    • ペイロードに形式が正しくないデータが含まれている場合
    • 任意のインジェスト制限を超えるペイロードがある場合
    • API 呼び出し制限の超過による調整

同じデータ フローに関連する永続的なエラーの過剰なログ記録を回避するために、一部のエラーは 1 時間ごとに限られた回数だけログに記録され、その後に概要エラー メッセージが表示されます。 その後、エラーは時間の終わりまでミュートされます。 特定のエラーがログに記録される回数は、DCR がデプロイされているリージョンによって異なる場合があります。

一部のログ インジェスト エラーは、DCR に関連付けることができないため、ログに記録されません。 次のエラーはログに記録されない場合があります。

  • 不正な呼び出し URI が原因で発生したエラー (HTTP 応答コード 404)
  • 特定の内部サーバー エラー (HTTP 応答コード 500)

DCR エラー ログの有効化

DCR エラー ログは、Azure Monitor のリソース ログとして実装されます。 DCR の診断設定を作成して、ログ収集を有効にします。 各 DCR には、独自の診断設定が必要です。 詳細なプロセスについては、「Azure Monitor の診断設定を作成する」を参照してください。 [ログ エラー][Log Analytics ワークスペースへの送信] のカテゴリを選択します。 DCR で使用されているのと同じワークスペースを選択することも、すべてのエラー ログを 1 つのワークスペースに統合することもできます。

DCR エラー ログの取得

エラー ログは、診断設定で指定した Log Analytics ワークスペースの DCRLogErrors テーブルに書き込まれます。 Log Analytics でこれらのログを取得するために使用できるサンプル クエリを次に示します。

特定の DCR のすべてのエラー ログの取得

DCRLogErrors
| where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"

特定の DCR 内の特定の入力ストリームのすべてのエラー ログの取得

DCRLogErrors
| where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/my-resource-group/providers/microsoft.insights/datacollectionrules/my-dcr"
| where InputStream == "Custom-MyTable_CL"

DCR メトリック

DCR メトリックはすべての DCR に対して自動的に収集され、他の Azure リソースのプラットフォーム メトリックなどのメトリック エクスプローラーを使用して分析できます。 入力ストリームはディメンションとして含まれるため、複数の入力ストリームを持つ DCR がある場合は、フィルター処理または分割によってそれぞれを分析できます。 次の表に示すように、一部のメトリックには他のディメンションが含まれます。

メトリック Dimensions 説明
1 分あたりのインジェスト バイト数のログ記録 入力ストリーム 1 分あたりに受信した合計バイト数。
1 分あたりのインジェスト要求数のログ記録 入力ストリーム
HTTP 応答コード
1 分あたりに受信した通話の数
1 分に削除された行のログ記録 入力ストリーム 1 分あたりの処理中に削除されたログの行数。 これには、KQL 変換のフィルター条件によって削除された行と、エラーが原因で削除された行の両方が含まれます。
1 分あたりに受信した行のログ記録 入力ストリーム 1 分あたりの処理で受信したログの行数。
1 分あたりのログ変換期間 入力ストリーム 1 分あたりの平均 KQL 変換ランタイム。 KQL 変換コードの効率を表します。 変換の実行時間が長いデータ フローでは、データ処理の遅延とデータ待機時間が長くなる可能性があります。
1 分あたりの変換エラー数のログ記録 入力ストリーム
エラーの種類
1 分あたりに発生した処理エラーの数

一般的な問題のトラブルシューティング

Log Analytics ワークスペースに予想されるデータが見つからない場合は、次の基本的な手順に従って問題のトラブルシューティングを行います。 これは、前述のように DCR ログを有効にしていることを前提としています。

  • Logs Ingestion Bytes per MinLogs 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 を確認します。 これにより、問題の根本原因を特定するための詳細が提供されます。

ログ インジェストの監視

次のシグナルは、DCR を使用してログ コレクションの正常性を監視する場合に役立ちます。 これらの条件を識別するためのアラート ルールを作成します。

Signal 考えられる原因とアクション
DCRErrorLogs の新しいエントリまたは Log Transform Errors の急激な変化。 - 認証、DCR または DCE へのアクセス、呼び出しペイロードの問題など、ログ インジェスト API の設定に関する問題。
- KQL 変換エラーの原因となっているデータ構造の変更。
- データ配信エラーの原因となっているデータ転送先の構成の変更。
Logs Ingestion Bytes per Min の急激な変化 - AMA 設定を含む、クライアントでのログ インジェストの構成の変更。
- 送信されるログの構造の変更。
Logs Ingestion Bytes per MinLogs Rows Received per Min の間の比率の急激な変化 - 送信されるログの構造の変更。 変更を調べて、データが KQL 変換で適切に処理されていることを確認します。
Logs Transformation Duration per Min の急激な変化 - KQL 変換で設定されたログ フィルター条件の効率に影響するログの構造の変更。 変更を調べて、データが KQL 変換で適切に処理されていることを確認します。
Logs Ingestion Requests per Min または Logs Ingestion Bytes per Min ログ インジェスト API サービスの制限に近づいている。 - 調整を回避するために、DCR 構成を調べて最適化します。

警告

問題を事後対応的にトラブルシューティングするのでなく、潜在的なエラー状態が発生したときに、事前に通知されるアラート ルールを作成します。 次の表に、ログ インジェストを監視するために作成できるアラート ルールの例を示します。

条件 [アラートの詳細]
削除された行の突然の変化 Logs Rows Dropped per Min の動的しきい値を使用するメトリック アラート ルール。
サービスの制限に近づいている API 呼び出しの数 Logs Ingestion Requests per Min の静的しきい値を使用するメトリック アラート ルール。 しきい値を 12,000 に近い値に設定します。これは、DCR あたりの最大要求数/分のサービス制限です。
エラー ログ DCRLogErrors を使用してクエリ アラートをログに記録します。 テーブル行のメジャーと 1しきい値を使用すると、エラーがログに記録されるたびにアラートが生成されます。

次のステップ