🐱

Azure Monitor Agentを使ってTomcatの死活監視を実装してみた

2024/06/08に公開

はじめに

記念すべき初投稿です。
先日職場で「VM上で動いているTomcatの死活監視をしたい」という話が出ました。
「そもそもTomcatって何ですか?」というレベル感の私でしたが
Azure Monitor Agentを使用して無事実装することができたので(?)
忘備録も兼ねて簡単にご紹介させていただきます!

方針

  • VMにAzure Monitor Agentをインストールする。
  • Tomcatが動いていることを示すメトリクスがきっとあるはずなので収集する
  • 「収集できなくなったタイミング」 = 「Tomcat(もしくはVM)が落ちたタイミング」と考え、
    そのタイミングでアラートを発報する

環境

Azure Virtual Machines
OS:Windows (Windows Server 2019 Datacenter)
サイズ:Standard B1ms (1 vcpu、2 GiB メモリ)

Java Development Kit
JDK 22.0.1

Apache Tomcat
Apache Tomcat 8.5.100

環境構築

こちらの記事を参考に行いました。
https://qiita.com/wawon1111/items/486763e3dc2e9253a5dc

Azureの設定

Log Analytics ワークスペースの作成

メトリクスの転送先となるLog Analytics ワークスペースを作成しておきます。

データ収集ルールの作成

Azure Monitor Agentを使用してVMのメトリクスを取得するには、
データ収集ルールを作成して、VMと関連付ける必要があります。

  1. 「data collections ruleの作成」を選択します。

  2. それぞれ入力して次に進みます。

  3. 「リソースの追加」から対象のVMを選択します。次に進みます。

  4. 「データソースの追加」を選択します。
    パフォーマンス カウンター(カスタム)を選択し、以下を追加します。

 \Process(tomcat8)\ID Process

  1. ターゲットにLog Analytics ワークスぺースを指定します。

  2. 設定内容に問題がないことを確認し作成します。
    VMにAzure Monitor Agentがインストールされ、データ収集ルールが関連づけられます。

確認

数分後、Log Analytics ワークスペースでVMが確認できるようになります。
Heart Beatも無事届いています。

以下のクエリを実行します。

Perf
| where CounterName == "ID Process"

60秒間隔でパフォーマンスカウンターが送信されていることが分かります。
これを使ってアラートを仕込みます。

アラートルールの作成

「新しいアラート ルール」を選択します。

「5分間テーブルの行が確認できない場合」に発報するよう設定しました。

検証

実際にTomcatのプロセスを停止した際に、アラートが発報されるかどうかテストしました。

21時12分30秒頃にTomcatを停止させました。
最後にメトリクスを受信したのは21時12分18秒でした。

アラートは21時20分40秒頃に発報されました。
詳細を確認してみると「21時13分に評価を開始、18分に評価を終了」しているように見えます。
どうやら評価を終了してからアラートが発報されるまでには少々タイムラグがあるようです。

まとめ

とりあえずプロセスの死活監視を行うことができました。
評価方法やアラートが発報されるまでのタイムラグについては別途検証したほうがよさそうです。

ご覧いただきありがとうございました。

Discussion