みち草

Azure中心にまとめる技術情報ブログ

Azure Log Analyticsで仮想マシンの死活監視!

はじめに

今回は、Azure Log AnalyticsとAzure Monitorを用いて、 Azure仮想マシンが停止した際にメール通知を行う、死活監視の仕組みについて実装方法を紹介します。

これは、去年にLog Analyticsで収集するメトリックにハートビートが追加されたことにより可能となりました

対象仮想マシン以外には、Log AnalyticsだけあればOKです。 あまり細かいことまではできませんが、設定自体はすぐにできます。

早速、進めていきます。

目次

Log Analyticsと仮想マシンの接続

まずは、仮想マシンのメトリックを収集するため、Log Analyticsワークスペースと仮想マシンを接続します。OS種別に関わらず、操作は同じです。

使用するLog Analyticsを開き、「ワークスペースのデータソース」から「仮想マシン」を選択します。

f:id:kkkzk:20190702191647p:plain

「接続」をクリックします。

f:id:kkkzk:20190702191716p:plain

f:id:kkkzk:20190702191735p:plain

数分待ち、下の画面になれば接続完了です。

f:id:kkkzk:20190702192802p:plain

「仮想マシン」画面でも、このワークスペースに接続されていることが確認できます。

f:id:kkkzk:20190702192818p:plain

仮想マシン側の準備はこれでOKです。

アラートの設定

続いてAzure Monitorにて、仮想マシンがダウンした際に特定のメールアドレスへ通知するよう設定します。

Azure Monitorの「アラート」から、「新しいアラートルール」をクリックします。

f:id:kkkzk:20190702192846p:plain

具体的なルールを作成していきます。「選択」をクリックします。

f:id:kkkzk:20190702192908p:plain

「リソースの種類でフィルター」欄にて「Log Analyticsワークスペース」を選択し、 仮想マシンを接続したワークスペースを選んで完了をクリックします。

f:id:kkkzk:20190702193204p:plain

アラート発砲の条件を指定します。「追加」をクリックします。

f:id:kkkzk:20190702193303p:plain

「Heartbeat」をクリックします。

f:id:kkkzk:20190702193332p:plain

条件指定の画面が表示されます。 指定したLog Analyticsワークスペースに接続したすべての仮想マシンのハートビートの合計数がグラフとして表示されています。

f:id:kkkzk:20190702220630p:plain

指定の仮想マシンだけに絞るため、「Computer」ディメンションのプルダウンから、 対象仮想マシンにチェックを入れます。すると対象マシンのハートビートのみがグラフに集計されます。

f:id:kkkzk:20190702220652p:plain

「アラートロジック」にてアラート発砲の条件を指定します。

ハートビートは仮想マシンが止まれば0になるので、「ハートビートの合計値が0以下」という条件にします。

一番下の評価基準は、対象のメトリックを評価する頻度、評価する際のデータの集計範囲を指定します。例として、集約粒度5分、評価の頻度5分ごとの場合は、5分毎に、直近5分のハートビート(ハートビートは1分毎に記録)を集計する、という意味になります。

これを使うことで、30分毎に直近15分のメトリックを評価したり、1時間ごとに24時間分のメトリックを評価したりと、いろいろできます。今回は1分毎に直近5分とし完了します。

f:id:kkkzk:20190702230931p:plain

アクションの追加をクリックします。ここでは、電話番号へのプッシュ通知やメールアドレスへのメール通知を複数まとめてアクショングループとして指定します。 既にアクショングループを作成済みの場合は選択が可能です。

ここではアクショングループの作成をクリックします。

f:id:kkkzk:20190702222838p:plain

アクショングループの名前、アクション名、アクションタイプを指定します。するとアクションタイプに応じた設定用画面が開くため、要望に応じた通知設定を行います。

アクションタイプにはメール/SMS/プッシュ通知/音声、Azure Functino、ロジックアプリなどあるため、通知の種類としてもいくつかありますが、このアラートをトリガーとして他のサービスと連携することが可能です。

f:id:kkkzk:20190702224903p:plain

アクショングループの作成が完了したら、アラートの名前と説明を指定しアラートルールを作成します。

f:id:kkkzk:20190708231644p:plain

アラートの管理画面にて、作成したアラートが有効になれば設定完了です。

f:id:kkkzk:20190702231034p:plain

アラートのテスト

では、設定したアラートのテストをします。設定したマシンを停止してみます。

f:id:kkkzk:20190702232547p:plain

停止すると、こんな感じのメールが来ました。5分以内くらいで届きます。

f:id:kkkzk:20190702234417p:plain

Azure Monitor側でも、作成したアラートがあがっていることを確認できます。

f:id:kkkzk:20190702234625p:plain

マシンを起動し、アラート条件が満たされなくなれば、アラートは解除され「Resolved」のメール通知が届きます。

おわりに

LogAnalyticsを用いて仮想マシンの停止アラートを発砲し、単純ではありますが、仮想マシンの死活監視の仕組みを構成できました。

今回はハートビートのメトリックを用いましたが、その他のメトリックを用いてCPUやメモリの使用率などからアラートを上げることも可能です。 Azure Monitorは対象メトリックや集計方法、アクションタイプを変えることで様々な使い方ができるため、いろいろ試してみてください。