🫓
Azure Monitor で プロセス監視は可能なのか?
はじめに
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 として利用する形で、監視対象プロセスに関するメトリックが取得できなくなったら、アラートする
試した結果:
案2 : Dependency Agent を利用する!
- Dependency Agent は VM Insights 機能 (VM のパフォーマンスや可用性を監視するための機能) で利用されているエージェント
- Azure Log Analytics へ プロセスの情報を含むログ (VMProcessテーブル + InsightsMetrics テーブル) を収集することができ、このログに対して Kusto クエリ をかけることで、プロセス監視することが可能
試した結果:
案3 : タスクスケジューラ / Cron 等 で プロセス一覧等 を定期出力し、カスタムログとして取得
- Windows / Linux 共に収集可能
- 基本的に OS上コマンドにて確認可能な情報を、取得できる
- 例えば、Windows ばら、タスクスケジューラで以下のようなバッチファイルを定期実行し、カスタムログとして取得する感じ
tasklist /v > C:\temp\processes.txt
代替案 : Change Tracking を利用する
- Azure Monitor Agent の Change Tracking を利用する
- Windows サービス / Linux デーモン の変更は、追跡することが可能
没案:InfluxData Telegraf エージェントを利用して、カスタム メトリックを収集する
- Linuxのみ : 用意されている[inputs.processes] では、個々のプロセス名の指定ができなかった。
- 把握できたのは 全体の total_shreads ぐらい。あとは zombie プロセスの数。
- いったん没案に ( こうやればできるぞ、というアイディアがあれば教えてください!! m(_ _)m )
参考URL
memo: Azure Monitor で利用可能なエージェント
なお Azure Monitor で利用可能なエージェントは以下の種類があります。
- Azure Monitor Agent
- Log Analytics Agent (2024/8/31 で廃止予定)
- Dependency Agent
- Azure Diagnostics Agent
- Telegraf Agent
Discussion