1.はじめに
AzureMonitorAgentのキャッシュについて、調査する機会がありましたので、AMAのトラブルシューティングの参考になれば幸いです。
2.AzureMonitorAgentの機能
AzureMonitorAgent(以降AMAと記載)の主な機能は以下2点となります。
・データ収集規則 (DCR) を使用して、収集するデータの種類や変換方法、宛先を定義
・ローカルログ、パフォーマンスデータ、ファイルベースのログなど、さまざまなデータソースからデータを収集
3.AMAのキャッシュが使用される状況
AMAにはデフォルトで10GBのキャッシュが用意されていますが、このキャッシュは以下の状況の際に使用されます。
・AMAとSentinel(LogAnalyticsワークスペース)が通信できない場合
・NWの帯域が足りなく、転送遅延が発生する場合
4.AMAのキャッシュ領域容量が足りない場合に起こる現象
キャッシュがどんどん使用されてしまい、規定値(デフォルト10GB)を超えてしまうと、ガーベージコレクション(GC)が動作し、キャッシュの上限の90%になるまでキャッシュを削除してしまいます。
その際に、送信されていないメッセージキャッシュも削除されてしまうため、LogAnalyticsに転送できないログが発生し、LogAnalytics側でログが欠損してしまいます。
なお、GCが動作した場合、以下のログファイルに処理の内容が出力されるため、ログを確認することで事象の有無を確認することが可能です。
/var/opt/microsoft/azuremonitoragent/log/mdsd.warn
5.AMAキャッシュ拡張
AMAの処理でGCが発生する場合の対処方法の一つとして、キャッシュの上限(10GB)を増やすことで対処することが可能です。実施方法は以下のサイトが参考になります。
参考URL:https://learn.microsoft.com/ja-jp/azure/azure-monitor/agents/azure-monitor-agent-manage?tabs=azure-resource-manager
【AgentSettings DCR を設定する】 -> 【Resource Manager テンプレート】
6.事例
AMAのキャッシュについて、調査した際の事象、環境について以下に記載します。
①実際に起こった現象
②の構成において、Microsoft Sentinelへのログ転送にて以下の現象が発生しました。
・Syslogサーバからのログの転送遅延
・Syslogサーバが受け取ったログがすべてSentinelへ転送できていない
※上記は、NW帯域制御の制限の上限を上げることによって現象改善されました。
②構成
環境:以下の経路、構成にてログが転送される構成になっています。
「Zscaler」→「NSS」→「Syslogサーバ」→「NW帯域制御装置」→「Sentinel」
Syslogサーバスペック:CPU:8CPU、メモリ:16㎇、ディスク:/var、/共用で400GB、OS:RHEL8
※CPU,メモリのサーバスペックは、以下のMS公開サイトのベンチマーク情報を参考に選定
参考URL:
https://learn.microsoft.com/ja-jp/azure/azure-monitor/agents/azure-monitor-agent-performance
ログ転送クラウドサービス :Zscaler(Zscaler Internet Access)
クラウドサービスのログ流量 :ログ保存量 1日300GB、ログ取込み量:日中帯 平均9,000EPS強(バースト時20,000EPS強)
クラウドサービス使用ユーザ :8万人程度
③AMAログとキャッシュディレクトリ
AMAのキャッシュ配下のディレクトリで、デフォルトキャッシュ容量は10GBが上限となります。
そのディレクトリの使用量が10GBを超えると、GC処理が行われます。
その際、キャッシュにあるログは、転送完了、未完関係なく古いキャッシュから削除されます。
/var/opt/microsoft/azuremonitoragent/events
AMA処理のログは以下のディレクトリへ出力されます。
/var/opt/microsoft/azuremonitoragent/log
確認した主なログファイル
/var/opt/microsoft/azuremonitoragent/log/mdsd.info
→AMA起動時のログが出力、その際にキャッシュ拡張している場合は、AgentSettingsパラメータで設定した容量(MB)が確認できます。ただし、デフォルト値は表示されません。
/var/opt/microsoft/azuremonitoragent/log/mdsd.warn
→GCが発生時の処理内容が出力されます
→AMAでのログの処理が20,000EPSを超えた際に出力されます(メッセージが出てもAMAの処理動作に制限はかからない)
/var/opt/microsoft/azuremonitoragent/log/mdsd.qos
→AMAのログ処理時の統計情報が出力されます(CSV形式:15分間隔)
④キャッシュ拡張手順(10GBから100GBへ拡張)
キャッシュ拡張手順については、次回の投稿時に記載予定しています。