Azure Monitor Agent でテキストログを収集する
はじめに
以下のドキュメントを参考に Azure Monitor Agent でサーバ上に保管されているテキスト ファイル ベースのログを収集してみます。
カスタム テーブルを作成
ログを格納するカスタム テーブルを作成します。Azure ポータルから作成することもできるのですが、ゴミ設定が残ることになるので、ドキュメントの通り Azure PowerShell で REST API を実行しテーブルを作成します。(利用しやすいように少し変更しています)
# Azure PowerShell にログイン
Connect-AzAccount
# パラメータを指定
$subscriptionId = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$resourceGroup = "MyResourceGroup"
$workspaceName = "MyWorkSpace"
$tableName = "CutomTextLog_CL" # _CL で終わるテーブル名を指定
$tableParams = @"
{
"properties": {
"schema": {
"name": "$tableName",
"columns": [
{
"name": "TimeGenerated",
"type": "DateTime"
},
{
"name": "RawData",
"type": "String"
}
]
}
}
}
"@
# API 実行するパスを指定
$path = "/subscriptions/$subscriptionId/resourcegroups/$resourceGroup/providers/microsoft.operationalinsights/workspaces/$workspaceName/tables/$tableName" + "?api-version=2021-12-01-preview"
# API を実行してテーブルを作成
Invoke-AzRestMethod -Path $path -Method PUT -payload $tableParams
データ収集エンドポイントの作成
テキスト ファイル ベースのログを収集する場合、データ収集エンドポイントが必要になります。
[モニター] から [データ収集エンドポイント] > [+ 作成] をクリックします。
名前、サブスクリプションなどを指定し、[確認と作成] から作成します。
データ収集ルールを作成
[モニター] から [データ収集ルール] を選択して、[作成] をクリックします。
ルール名、プラットフォームの種類、エンドポイント ID (=先ほど作成したデータ収集エンドポイント) などを設定します。
次のリソース タブで [+リソースの追加] を選択し、対象 VM を追加します。また、[データ収集エンドポイントを有効にする] にチェックを入れ、VM の列でデータ収集エンドポイントを指定します。
次の収集と配信 タブで [+データソースの追加] をクリック、[データ ソースの種類] で [カスタム テキスト ログ] を選択し、取得元ファイルの格納場所や書き込み先のテーブル名を指定します。今回の検証ではログ取り込み時に変換しないので、Transform は source のままにします。
ターゲットでテーブルを作成した Log Analytics ワークスペースを指定して、[データ ソースの追加] をクリックします。カスタム テキスト ログが追加されていることを確認し、[確認と作成] からデータ収集ルールの作成を完了します。
動作確認
ここまで設定すれば完了です。ドキュメントに記載のあるスクリプトで対象サーバの指定パスにファイルをログを生成します。
正常に取り込めると以下のように検索が可能です。
Discussion