この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
結論からいうと Azure Monitorを利用して、リアルタイムのプロセスやサービス監視を行う機能は現状ありません。
オープンソースの監視ツールであるZabbixなどではプロセス名やサービス名を指定して
「プロセス監視」や「サービス監視」が実現可能ですが、それと同じようなことは現状、実現できないようです。
しかしながら、サービス監視については、イベントログを利用することでリアルタイム監視とする方法が代替策として利用できますのでこちらでご紹介します。またプロセス監視自体も1時間に1回のデータは収集可能(工夫すればリアルタイムでの検知も可能)ですので合わせてご紹介します。
イベントログ監視
Azure仮想マシンでイベントログ監視を実施したい場合、以下公式ドキュメントに従うことで設定可能です。
クイック スタート:Azure Monitor を使用して Azure 仮想マシンを監視する
全ての監視のポイントになる部分ですので、このblogでも以下より手順を掲載しています。公式ドキュメントですと情報量も多いため少しわかりづらい部分もありそうなのでご参考ください。
1.Azure Monitor for VMs の有効化
監視対象仮想マシンのメニューの「分析情報」を選択し、「有効」をクリックします。
※Azure Monitor for VMs を有効化することで、通常のログ取得に加えて、各アプリケーションのネットワーク利用情報、プロセス情報なども取得可能となります。
2.Log Analyticsワークスペースを作成
サービス一覧から「Log Analyticsワークスペース」を選択し、新規リソース追加を実行します。
パラメータ入力し、
価格レベルを決定します。
※Free の価格レベルを選択すれば、データ上限は 500 MB/日で、データ保有期間は 7 日間に限定されますが無料で利用可能です。
※追記:サブスクリプションによっては、現在Freeレベルは提供されていないようです
3.Log Analytics ワークスペースに仮想マシンを接続
作成したLog Analytics ワークスペースの「ワークスペースのデータソース」から「仮想マシン」をクリックします。
接続可能な仮想マシン一覧が表示されるので、ログ収集を実施したい仮想マシンをクリックしワークスペースに接続します。
「接続」をクリックします
接続に成功すると、Log Analytics ワークスペースの「仮想マシン」設定から接続されたことが確認できます。
4.イベントログ収集設定
Log Analytics ワークスペースの「詳細設定」をクリックします。
[Data] を選択してから、 [Windows イベント ログ] を選択します。
イベント ログを追加する為に、ログの名前を指定します。今回は 「System」ログを指定し、プラス記号 ( + ) を選択します。
収集するイベントの重大度も設定可能です。今回は全てのログレベルを対象としました。ログが追加されていることを確認し、Saveで設定を保存します。
5.イベントログ収集確認
Log Analytics ワークスペースの「ログ」をクリックします。特定仮想マシンで収集された全てのイベントログを確認するには以下のようにクエリで検索します。
Event | where Computer == “仮想マシン名“
※クエリについては、
Log Analytics でのWindows イベントログ収集
などの記事も参照してください
イベントログが検索されます。
サービス監視
Windowsサービスの監視方法例について、IISを例にご紹介します。
IISの起動状況を確認し、サービスが停止した場合のイベントログを検索します。
1.サービス停止時のイベントログ内容確認
事前に、Windowsサーバ上で、下記のようにログの名前やログ内容を確認しておきます。
2.確認した内容でログを検索
以下のような形でクエリを発行し、サービス停止のイベンログが検索されることを確認します
<サンプル クエリ>
Event
| where Computer == “対象サーバ名“
| where EventLog == “System”
| where RenderedDescription contains “World Wide Web 発行サービス サービスは 停止 状態に移行しました“
以下のように検索結果が確認できます。
プロセス監視
プロセス監視は実現可能ですが、プロセス情報が1時間に1回しか収集されず、この収集間隔は変更できない為、リアルタイムでの監視にはならないと考えられます。
プロセス自体は、VMProcess というクエリで検索可能です。例えば、IISのプロセスが稼働しているかどうかを調べたい場合は、Log Analytics ワークスペース上で以下のようなクエリを実行することで検索可能です。
VMProcess
|where Computer == “対象サーバ名“
|where DisplayName == “WWW Publishing Service”
IISのプロセス情報が検索できます。収集されたデータのタイムスタンプを確認すると、1時間毎のデータしか存在しないことが確認できます。
上記のような状況の為、プロセス監視についても、リアルタイムでの通知まで考慮する場合は、現状はイベントログに情報を集約するしかなさそうです。(プロセス停止時に、イベントログに何らかの情報を出力するようにスクリプトを準備する、などでしょうか。)その為、純粋にプロセス監視を実施しようとした場合、かなりの手間がかかってしまうため、他の監視方法で代替できないかを検討した方がよいかもしれません。
参考情報:診断設定と分析情報
仮想マシンの設定にある「診断設定」と「分析情報」では、両方ともゲストOSのデータが参照できる為、これらの設定が何なのか、Azure Monitorで監視を実装する場合に必須設定なのかどうか、が個人的に不明でしたので調べました。
こちらは、結論、Azure Monitorでログ監視を実施する場合は必須設定ではありません。しかしながら、公式ドキュメントどおり[分析情報]については有効化しておいた方がよいです。
似たような表示が多く(どちらでもパフォーマンスカウンタのデータが表示される)、それぞれの設定の違いがわからずに個人的には混乱していました。診断情報、分析情報はそれぞれ以下目的で利用されます。
[診断設定] ・・・指定したストレージ アカウントへデータを転送する際に利用するもの。Log Analytics ワークスペースとの連携はそもそもない。
[分析情報] ・・・Azure Monitor for VMs を利用する際に必要となる設定。blogの中で記載しととおり、通常のログ取得に加えて、各アプリケーションのネットワーク利用情報、プロセス情報なども 取得可能。
AzureMonitorを利用する際には、[分析情報]を有効化しておくことをお勧めします。
[診断設定]と[分析情報]を両方有効化しても、もちろん構いません。
Azure Monitor エージェントの概要
上記URLで以下のように記載されています。
たとえば、Azure Diagnostics 拡張機能を必要とするメトリック アラートを使用する必要があるときに、Log Analytics エージェントと依存関係エージェントを必要とする Azure Monitor for VM の機能も利用したい場合があります。 このような場合、複数のエージェントを使用できます
Azure仮想マシン上のデータ収集は、「エージェント」により実行されます。その「エージェント」の種類は複数存在し、それぞれで収集対象とするデータが異なる、ということです。
参考情報:Log Analytics での遅延について
Log Analyticsでのログ検索では15分程度のタイムラグが発生します。実際のログ出力から、Log Analytics上での検索可能となるまでに時間を要する為、少し注意が必要です。15分程度遅れる、という部分が読みづらいのですが以下に遅延に関する記載があります。
待機時間に影響する要因
「リソースログからのデータは、Azure サービスによって異なりますが、2〜15分かかります」
以上、Azure Monitorに関して少し記載させていただきました。