Azure VMとLog Analytics接続状況をHeartbeatログ使って監視

2019-08-18Azure,Log Analytics,Monitor

仮想マシン(Azure VM)からLog Analyticsワークスペースとの接続状況の確認方法纏めです。
接続状況はHeartbeatのログを使って確認しています。
併せて仮想マシン(Azure VM)からLog Analyticsワークスペースの接続状況をAzure Monitorを使って監視してみました。

    • Heartbeatの概要
    • Log AnalyticsでHeartbeatを確認
    • カスタムログ検索を使ってHeartbeat監視
    • アラート通知内容確認

Log Analyticsワークスペースとの接続状況はAzure Monitorのカスタムログ検索を使う方法とメトリックを使う方法があります。
今回はカスタムログ検索を使う手順を纏めています。
メトリクスを利用する方法はこちらに記載しております。

※今回はAzure上の仮想マシンを対象に纏めています。
※Log AnalyticsはAzure Monitorログと名前が変わっています。Azure Portal上ではLog Analyticsワークスペースと表記されている為本記事ではLog Analyticsのままとしています。

スポンサーリンク

Azure Monitor エージェントからのHeartbeatログ確認

Log Analyticsのエージェントからの正常性通知について

定期的にLog AnalyticsのエージェントからLog Analyticsワークスペースへ正常性の通知します。
正常性の通知はHeartbeatのログを送信する事で行われます。
通知は1分間隔で実施されます。

Heartbeat

このHeartBeatの受信状況を確認する事でLog Analyticsワークスペースと各リソース(仮想マシン(Azure VM))の接続状況を把握する事が出来ます。

仮想マシン(Azure VM)の場合はAzure Monitor エージェント

仮想マシン(Azure VM)の場合はAzure Monitor エージェントがLog Analyticsのエージェントとして動作します。
Azure Monitor エージェントがメトリクスやログ情報を収集しLog Analyticsワークスペースへ送信します。

Azure Monitor エージェントの概要

HeartbeatもAzure Monitor エージェントがLog Analyticsワークスペースへ送信します。

旧来はLog Analytics エージェント等がありました。
記事記載時点ではAzure Monitor エージェントに集約されています。
昔のエージェント情報が集約された事についての記載はこちらにあります。

レガシ エージェントの統合

利用したリソース

今回利用したリソースです。

    • Log Analyticsワークスペース:log-test-01
    • 仮想マシン(Azure VM):test-vm-01およびtest-vm-02

 Log AnalyticsでHeartbeatを確認

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

列(Heartbeat)

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

サンプル ログ検索

Heartbeatを確認
1分間隔で各仮想マシン(Azure VM)からのHeartbeatを受信している事が確認出来ます。 

Heartbeat
| project TimeGenerated, Computer, Category, ResourceType

仮想マシン(Azure VM)ごとに最後に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ワークスペースと各リソース(仮想マシン(Azure VM))の接続状況を監視します。
Heartbeatの最終受信時刻が一定時間を経過した事を検知する事で実現出来ます。

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

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

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

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

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

Azure Monitorでアラートルール作成

アラートルールを作成します。

アラートルール作成手順
左側のメニューでアラートを選択します。
作成のアラートルールを選択します。

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

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

アラート発生条件となるログクエリを設定します。
Heartbeatを最後に受信した時間が5分以上前の場合に検知するログクエリを設定します。
by ComputerでComputer単位で値を取得するようにしています。

 

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

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

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

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

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

アクション グループ

詳細ではアラートルール名や重大度を設定します。
確認および作成に進みアラートルールを作成します。

 

確認画面です。
設定値を確認します。
作成を選択します。

デプロイが完了するとアラートルールに表示されます。

—広告—

仮想マシン(Azure VM)を停止してアラート確認

仮想マシン(Azure VM)のtest-vm-01、02を停止しLog Analyticsワークスペースとの接続断を発生させます。

アラートを確認

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

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

仮想マシン(Azure VM)停止後にアラート検知している事が確認出来ます。
1分間隔でアラートルールが実行される為、1分おきにアラート検知している事が確認出来ます。
Computer単位(test-vm-01,02)で検知しているため2件アラートが発生しています。

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

受信したアラートメールを確認

受信したアラートメールの内容を確認します。
test-vm-01のエラーの場合です。

アラートメール

受信したアラートメールを見るとアラートの詳細画面やLog Analyticsでのクエリ実行結果へのリンクが確認出来ます。

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

いつから停止してるかはリンク先の情報を確認する必要があります。

View the alert in Azure Monitorのリンクを選択するとアラート詳細画面が表示されます。
View query resultsのリンクを選択するとログクエリの実行結果を確認出来ます。

※アクショングループの共通アラート スキーマは無効にしています。有効にした場合にはアラートメールの表示内容が異なります。

回復時のアクションについて

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

アラートはしばらく発生し続ける

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

発生時と回復時のみ通知にする場合にはメトリクスを使った監視を利用する方法を利用出来ます。

—広告—

最後に

今回は仮想マシン(Azure VM)からLog Analyticsワークスペースへ接続状況をHeartbeat使って確認してみました。
Heartbeatはログとして記録される事が確認出来ました。
記録されたログを利用してAzure Monitor(カスタムログ検索)で監視が出来ました。

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

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

スポンサーリンク