Azure Monitorでのカスタムログ検索を使った監視設定(Heartbeatを使ったAzure VMの接続状況監視)

2019-08-18Azure,Log Analytics,Monitor

Log Analyticsワークスペースへ収集したログを利用した、Azure Monitorのアラートルール作成手順です。

仮想マシン(Azure VM)とLog Analyticsワークスペースへの接続時には定期的にHeartbeatログが送信されています。
このHeartbeatログを利用して、仮想マシンからLog Analyticsワークスペースへの接続状況を監視するアラートルールを作成しています。
仮想マシンを停止して、アラート検知も確認しています。

Log Analyticsワークスペースとの接続状況を確認する方法には、Azure Monitorのカスタムログ検索を使う方法とメトリックを使う方法があります。
Heartbeatのメトリックを利用して監視する方法についてはこちらで紹介しています。

※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。

スポンサーリンク

Azure Monitor エージェントからのHeartbeatログをLog Analyticsワークスペースで確認

Log AnalyticsワークスペースでHeartbeatのログを確認

Log AnalyticsワークスペースでHeartbeatログを確認します。
アラートルールでは使用しませんが、Heartbeatには、Azure Monitorエージェントに関する項目以外にも、コンピューターのIPアドレスやOS名など、多くの情報が含まれています。

列(Heartbeat)

また、クエリのサンプルについてはこちらに記載があります。
レガシーエージェントについての記載ですが、クエリ自体は流用できます。

サンプル ログ検索

Heartbeatのログを確認
1分間隔で各仮想マシンからのHeartbeatを受信していることが確認できます。

Heartbeat
| project TimeGenerated, Computer, Category, ResourceType

仮想マシンごとに、最後に受信したHeartbeatの時間を確認します。
最後のログ受信時間を利用して、接続状況の監視を行うことができます。

Heartbeat
| summarize max(TimeGenerated) by Computer

 Heartbeatには、OSのタイプやバージョンなど多くの情報が含まれています。

Heartbeat
| summarize LatestRecord = arg_max(TimeGenerated, *) by Computer
| project Computer, OSType, OSName

—広告—

Azure Monitorでカスタムログ検索を利用したアラートルールを作成

Heartbeatの最終受信時刻を監視するアラートルールを作成

Log Analyticsワークスペースと仮想マシンの接続状況を監視します。
これは、Heartbeatの最終受信時刻が一定時間を経過したことを検知することで実現できます。

過去5分間にHeartbeatを受信しなかった仮想マシンを検出するログクエリを設定しています。
検索範囲は15分(過去15分のログ)とし、1分間隔で検索して確認する設定にしています。
検索範囲は5分より長めに設定しています。

タブ名 項目名 設定値
スコープ リソース Log Analytics ワークスペース
(log-test-01)
条件 シグナル名 カスタムログ検索
クエリ内容 手順参照
測定 メジャー:テーブルの行
集計の種類:カウント
集計の頻度:15分
ディメンションで分割する Computer
(今後のすべての値を含める)
アラートロジック

演算子:次の値以上
しきい値:1
評価の頻度:1分

アクション アクショングループ名 ag-mail-01
(メール送信用)
詳細 重大度(重要度) 1 – エラー
アラート ルール名 Azure Monitor Agent HeartBeat Error(Custom log)

※設定時は重大度と表示されますが、設定後は重要度と表示されます。
※監視間隔は要件に応じて変更します。今回は検証目的なので短めの設定としています。

カスタムログ検索を利用したアラートルールを作成

カスタムログ検索を利用して、Heartbeatを受信状況を確認するアラートルールを作成します。

カスタムログ検索を利用したアラートルール作成手順
左側のメニューでアラートを選択します。
作成のアラートルールを選択します。

スコープはLog Analyticsワークスペースを指定します。

条件設定です。
シグナルはカスタムログ検索を選択します。

アラート発生条件となるログクエリを設定します。

Heartbeatを最後に受信した時間が5分以上前の場合に検知するように、ログクエリを設定します。
by Computerと指定して、Computer単位で値を集計するようにしています。

 

Heartbeat
| summarize LastCall = max(TimeGenerated) by Computer
| where LastCall < ago(5m)

測定では、ログクエリの実行時間の範囲やカウント方法を設定します。15分間分のログを対象に、クエリ実行結果の行数をカウントしています。

ディメンションは、Computer単位としています。

アラートロジックでは、監視間隔やしきい値を設定します。
1分間隔でクエリを実行し、1件以上のログを検知した場合にアラートを発する設定にしています。

アクショングループでは、アラート通知方法を設定します。
事前に作成しておいた、メール送信用のアクショングループを選択します。

アクション グループ

詳細では、アラートルール名や重大度を設定します。

 

確認画面です。
設定値を確認します。
作成を選択します。
作成したアラートルールが表示されています。

—広告—

仮想マシンを停止してHeartbeatログのアラートの発生を確認

仮想マシンを停止して、Log Analyticsワークスペースとの接続断を発生させます。

仮想マシンを停止してHeartbeatログアラートの発生を確認

仮想マシンを停止して、アラートを発生させます。

    • 実施した操作
      • test-vm-01を停止
      • test-vm-02を停止
      • test-vm-01を起動
      • test-vm-02を起動
発生したアラートを確認

仮想マシンが停止した後にアラートが検知されていることが確認できます。

1分間隔でアラートルールが実行されるため、1分おきにアラートが検知されていることが確認できます。
Computer単位(test-vm-01, test-vm-02)で検知しているため、2件のアラートが発生しています。

発生したアラートを選択すると、アラートの詳細が表示されます。
ディメンションに設定したComputer名も確認できます。
クエリの実行結果は、"ログに結果を表示する"から表示できます。

Heartbeatログのアラートメールを確認

受信したアラートメールの内容を確認します。

Heartbeatログのアラートメール

受信したアラートメールには、アラートの詳細画面やLog Analyticsでのクエリ実行結果へのリンクが表示されています。

ディメンションの値を見ると、発生したComputer名がわかります。Metric Valueでは、発生したカウント数を確認できます。
ただし、ログクエリの実行結果自体はアラートメール本文からは確認できません。

いつから停止しているかは、リンク先の情報を確認する必要があります。
“View the alert in Azure Monitor"のリンクを選択すると、アラート詳細画面が表示されます。
“View query results"のリンクを選択すると、ログクエリの実行結果を確認できます。

※アクショングループの共通アラート スキーマは無効にしています。有効にした場合にはアラートメールの表示内容が異なります。
※サンプルは、test-vm-01のエラーを受信したアラートメールです。

回復しましたという通知はされない

回復時にはアラート通知が停止します。
ただし、回復しましたという通知は送信されず、アラートの条件も起動済みのままとなります。

集計の粒度やクエリ設定によってはアラート通知がしばらく継続する場合がある

仮想マシンを停止した場合にも、アラートが発生し続けるため注意が必要です。
集計の粒度(ログクエリ実行時の時間の範囲)で指定した期間と、クエリ内で指定した時間に応じてアラートが発生し続けます。
今回の設定では、仮想マシンの割り当て解除時から約20分間アラート通知が継続しました。

—広告—

最後に

Azure Monitorでカスタムログ検索を利用したアラートルールの作成手順について確認しました。
Heartbeatログを利用したアラートルールを例に手順を確認しました。
Heartbeatログの最終受信時刻から、仮想マシンからLog Analyticsワークスペースへの接続状況を監視するアラートルールを作成できました。
カスタムログ検索を利用したアラートルールは、幅広く利用できるかと思いました。

引き続き、色々試してみたいと思います。

Azure Monitorエージェントを利用して、Windows ServerのイベントログをLog Analyticsワークスペースに収集し、監視する方法についてはこちらで紹介しています。

アクテビティログから仮想マシンの作成を検知する手順についてはこちらで紹介しています。

スポンサーリンク