👀

Azure Monitor エージェントのカスタムログ収集にファイルパスをつける

2023/10/12に公開

はじめに

Azure で OS 上のカスタムログ(任意のテキストログファイル)を監視したいというケースを、特にオンプレミス上で稼働しているシステムの Azure 移行案件等でお見かけします。
この場合、OS 上のテキストログは Azure Monitor エージェントを通じ Log Analytics ワークスペースへ収集することが可能であり、必要に応じて Log Analytics ワークスペース(以降、LAW)上でアラートの設定等を行うことになります。
デフォルトでは収集したログファイルのファイルパスが LAW 上に格納されないため、LAW に収集元のファイルパスを出す方法を記載します。

制限事項

本機能は Windows OS にのみ対応しており、Linux では未サポートです。

参考情報

通常のカスタムログ収集方法については以下をご参照ください。

設定の流れ

通常のカスタムログ収集の手順とほぼ同じですが、LAW のカスタムログテーブルを作成する際に特別な列(ファイルパス情報を格納する列)を追加する必要があります。

  1. 監視対象 VM の準備(※手順省略)
  2. LAW の作成
  3. データ収集エンドポイントの作成
  4. カスタムテーブルの作成
  5. データ収集ルールの作成

設定手順

1. LAW の作成

以下を参照し LAW を作成します。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/logs/quick-create-workspace?tabs=azure-portal

2. データ収集エンドポイントの作成

以下を参照しデータ収集エンドポイントを作成します。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/essentials/data-collection-endpoint-overview?tabs=portal#create-a-data-collection-endpoint

3. カスタムテーブルの作成

Powershell でカスタムテーブルを作成します。公式ドキュメントに記載されている Powershell スクリプトによるカスタムテーブルのサンプルに加えて、tableParams に格納する JSON 形式のパラメータに今回のファイルパスを格納する列("name": "FilePath") を追加してテーブルを作成します。
※ {} 内のパラメータは自分の環境にあわせて適宜修正してください。

$tableParams = @'
{
    "properties": {
        "schema": {
               "name": "{TableName}_CL",
               "columns": [
        {
                                "name": "TimeGenerated",
                                "type": "DateTime"
                        }, 
                       {
                                "name": "RawData",
                                "type": "String"
                       },                              # ここの"," から
		       {
                                "name": "FilePath",
                                "type": "Dynamic"
                       }                              # ここまで追加
              ]
        }
    }
}
'@

Invoke-AzRestMethod -Path "/subscriptions/{subscription}/resourcegroups/{resourcegroup}/providers/microsoft.operationalinsights/workspaces/{WorkspaceName}/tables/{TableName}_CL?api-version=2021-12-01-preview" -Method PUT -payload $tableParams

4. データ収集ルールの作成

こちらを参考にデータ収集ルールを作成します。
https://learn.microsoft.com/ja-jp/azure/azure-monitor/agents/data-collection-text-log?tabs=portal#create-data-collection-rule-to-collect-text-logs
データソースの追加画面で、カスタムテキストログを指定する箇所で先ほど作成したカスタムテーブルを指定します。

5. ログ取り込みの確認

監視対象 VM 上の監視対象テキストファイルに書き込みを行い、ログが当該 LAW に書き込まれているか確認します。

  • FilePath 指定前

  • FilePath 指定後
    ※ FilePath 列が追加され、監視対象ログファイルのパスが列に追加された

列に追加されたことで確認できる情報が増えただけでなく、この追加された列を使って集計をしたりできます。下図ではログファイルごとの件数をクエリしています。

まとめ

カスタムログ(テキストログ)の監視をおこなう場合、デフォルトではファイルパスの情報が含まれません。ログファイルのパスもあわせて表示・分析したい場合はこちらの情報を利用してみてください。

Microsoft (有志)

Discussion