Azure およびオンプレミス環境からのテレメトリ データを収集、分析、処理するために使用する Azure サービス。
Hello Intune/AzureAD構築PJ ユーザー
詳細な設定内容および観測結果をご共有いただき、誠にありがとうございます。
Azure Monitor Agent(AMA)は、リアルタイムかつ継続的なログ収集を目的として設計されており、監視対象のファイルに新しい内容が追記されるのを常時監視しています。今回、監視対象のパスに約100個の過去の .log ファイルを一括で配置された際、エージェントはそれらのファイルの読み取りを開始しました。
ファイルスキャンパターンに合致するような大容量のログファイルを、監視対象ディレクトリ内で名前変更したり、コピーして配置したりすることは避けてください。もしやむを得ず配置する場合は、1分あたりの処理量を50MB以内に抑えるようにしてください。多数のログファイルを同時に追跡・監視することは、エージェントのCPUおよびメモリ使用率を著しく上昇させる要因となります。
エージェントが大量のファイルを処理している最中に、新たなログファイルが生成された場合、エージェントは現在書き込みが行われている新しいファイルを優先して処理します。その結果、処理途中にあった古いファイル群については、実質的に取り込み処理が中断(破棄)された状態となります。また、中断されたファイルを再度配置し直しても、正常に処理されることはありません。これは、エージェントが内部的に各ファイルの読み取り位置を追跡・管理しており、それらのファイルを「すでに処理済み」と認識してしまうためです。
新しいファイルが到着した際に、それまで進行していた取り込み処理が中断されるのは、以下の理由によるものです:
これは、AMAにおけるリソースおよび設計上の制約です。このエージェントは、ログファイルに新しいレコードが追記されるのに合わせて、それらを収集することに最適化されています。一括インポートツールとしての設計はなされていません。エージェントが一度にあまりに多くのファイルやデータによって過負荷状態に陥り(目安となる50 MB/分というガイドラインを超過する場合など)、その最中に新たに書き込みが行われているファイルが出現すると、エージェントは処理対象をその新しいファイルへと切り替えます。
- ログファイルの対象とするディレクトリは、10個を超えないようにしてください。
- 監視対象ディレクトリ内のログファイルは、継続的にクリーンアップしてください。
- すべてのログの処理が完了するのに十分な時間を確保するため、少なくとも2日間は待機してください。
- 監視対象ディレクトリへのファイルコピーは、1分あたり50MBを超えないようにしてください。
不足しているログをLog Analyticsにインポートするにはどうすればよいですか?
AMAはこれらのファイルを再収集しないため、推奨される方法はLogs Ingestion APIを使用することです。これは、外部データや履歴データをAMAを介さずにカスタムLog Analyticsテーブルに直接送信するための、Microsoftが公式にサポートしている方法です。
概要手順:
- 認証のために Microsoft Entra アプリケーションを登録します (クライアント ID、テナント ID、クライアント シークレット)。
既存のデータ収集エンドポイント (DCE) とデータ収集ルール (DCR) を使用するか、API ベースのデータ取り込み用に専用の DCR を作成します。
Entra アプリケーションに DCR 上で「モニタリング メトリック パブリッシャー」ロールを付与します。
収集されていない .log ファイルを読み込み、各ログ エントリを JSON に変換して、ログ取り込み API エンドポイントに POST するスクリプト (PowerShell、Python、.NET など) を作成します。
データは、同じ MessageTraceLog_CL カスタム テーブルに格納されます。
Official tutorials with sample code:
- Logs Ingestion API overview
- Tutorial: Send data using Logs Ingestion API (Azure portal)
- Sample code (.NET, Python, PowerShell, etc.)
同様の問題の再発を防ぐため、以下のガイドラインに従ってください。
監視対象ディレクトリに対し、大量のログファイルを一度にまとめてコピーしないでください。
ファイルをコピーする必要がある場合は、1分あたり50MB未満に抑えてください。
エージェントのリソース使用量を低減するため、収集済みの古いログファイルは適宜削除(クリーンアップ)してください。
ファイルが取りこぼされたと判断する前に、処理が完了するまで少なくとも2日間の猶予を設けてください。
References:
- Collect text file from VM with Azure Monitor Agent
- Logs Ingestion API in Azure Monitor
- Tutorial: Send data using Logs Ingestion API (Azure portal)
- Sample code for Logs Ingestion API
- Troubleshoot AMA on Windows VMs
お役に立てば幸いです!ログ取り込みAPIの設定についてご質問があれば、お気軽にお問い合わせください。
このコメントが役に立ったと感じられた場合は、「いいね」ボタンをクリックしていただけると嬉しいです。
Thanks,
Suchitra.