🫓

Azure Monitor で プロセス監視は可能なのか?

2024/03/07に公開

はじめに

Azure Monitor でプロセス監視が可能かどうか、少し考えてみました!
試せていないものはアイディアとして記載した形ですが、試してみたものは別途記事として記載して行きたいと思っています。

そもそも…プロセス監視必要なのか、という話はある

そもそも何故監視したいのかといえば エンドユーザー にしっかりと システム がサービス提供できているかを確認するためです。 であれば、サービスを構成する一要素に過ぎないプロセスを監視することよりも、 Application Insights を用いて外形監視(サービスがエンドユーザーから利用可能な状態にあるかどうかを監視)するのが最も重要! といえます。

とはいえ、必要な場合、どういう案がある?

とはいえ、オンプレミスでは プロセス監視 をガッツリやっていたとか、なんにせよプロセス監視をしなければならないんだ、という場合もあるかと思います。
そんなとき Azure としてはどういった手がありそうか、いくつか浮かんだアイディアを記載してみました。
他、こんな方法もあるんじゃないか、というアイディアがあれば教えてください!

  • 案1 : Azure Monitor Agent を利用する
  • 案2 : Dependency Agent を利用する
  • 案3 : タスクスケジューラ / Cron 等 で プロセス一覧等 を定期出力し、カスタムログとして取得
  • 代替案 : Change Tracking を利用する
  • 没案:InfluxData Telegraf エージェントを利用して、カスタム メトリックを収集する

案1 : Azure Monitor Agent を利用する!

  • Azure Monitor Agent は、Log Analytics Agent の後継となる新しいエージェント
  • プロセス関連のメトリック(例えば プロセス毎の CPU 使用率)を取得することができ、Log Analytics の Perf テーブルに保存もできるので、 Kusto クエリ で 監視対象プロセス関連のログ有無を確認可能
  • これを いわば Heratbeat として利用する形で、監視対象プロセスに関するメトリックが取得できなくなったら、アラートする

試した結果:
https://zenn.dev/microsoft/articles/azuremonitor-processes-amacustom

案2 : Dependency Agent を利用する!

  • Dependency Agent は VM Insights 機能 (VM のパフォーマンスや可用性を監視するための機能) で利用されているエージェント
  • Azure Log Analytics へ プロセスの情報を含むログ (VMProcessテーブル + InsightsMetrics テーブル) を収集することができ、このログに対して Kusto クエリ をかけることで、プロセス監視することが可能

試した結果:
https://zenn.dev/microsoft/articles/azuremonitor-processes-depend

案3 : タスクスケジューラ / Cron 等 で プロセス一覧等 を定期出力し、カスタムログとして取得

  • Windows / Linux 共に収集可能
  • 基本的に OS上コマンドにて確認可能な情報を、取得できる
  • 例えば、Windows ばら、タスクスケジューラで以下のようなバッチファイルを定期実行し、カスタムログとして取得する感じ
tasklist /v > C:\temp\processes.txt

https://jpazmon-integ.github.io/blog/LogAnalytics/AMA_CustomLog/

代替案 : Change Tracking を利用する

  • Azure Monitor Agent の Change Tracking を利用する
  • Windows サービス / Linux デーモン の変更は、追跡することが可能

https://learn.microsoft.com/ja-jp/azure/automation/change-tracking/overview-monitoring-agent?tabs=win-az-vm#change-tracking-and-inventory-data-collection

没案:InfluxData Telegraf エージェントを利用して、カスタム メトリックを収集する

  • Linuxのみ : 用意されている[inputs.processes] では、個々のプロセス名の指定ができなかった。
  • 把握できたのは 全体の total_shreads ぐらい。あとは zombie プロセスの数。
  • いったん没案に ( こうやればできるぞ、というアイディアがあれば教えてください!! m(_ _)m )

参考URL

https://zenn.dev/microsoft/articles/azuremonitor-processes-amacustom
https://zenn.dev/microsoft/articles/azuremonitor-processes-depend
https://learn.microsoft.com/ja-jp/azure/automation/change-tracking/overview-monitoring-agent?tabs=win-az-vm#change-tracking-and-inventory-data-collection
https://jpazmon-integ.github.io/blog/LogAnalytics/AMA_CustomLog/

memo: Azure Monitor で利用可能なエージェント

なお Azure Monitor で利用可能なエージェントは以下の種類があります。

  • Azure Monitor Agent
  • Log Analytics Agent (2024/8/31 で廃止予定)
  • Dependency Agent
  • Azure Diagnostics Agent
  • Telegraf Agent
Microsoft (有志)

Discussion