VM Insightsを利用してWindowsのイベントログをLog Analyticsに収集、検索

Azure,Log Analytics,Monitor,Virtual Machine,Windows

Windows ServerのイベントログをLog Analyticsワークスペース(Azure Monitorログ)で収集するための設定手順です。
収集したイベントログをLog AnalyticsでKQLクエリ検索する手順もまとめています。

    • 実施した手順
      • 分析情報(VM insights)有効化
      • データ収集ルールを作成してイベントログを収集
      • データ収集ルールにリソースを追加
      • Log Analyticsで収集したイベントログをKQL検索
      • parse_xml()を使ってイベントログの内容を取得

※仮想マシン(Azure VM)を利用しています。
※Windows Server 2022 Datacenter Azure Editionを利用しています。
※Log Analyticsワークスペースはlog-test-01、仮想マシン(Azure VM)はtest-vm-01、02のリソースを利用しています。

スポンサーリンク

分析情報(VM insights)のデータ収集ルールを使ってイベントログをLog Analyticsワークスペースに収集

イベントログの収集設定はMS Learnに記載があります。
こちらの内容を参照しながら設定を進めます。

Azure Monitor を使用して Azure 仮想マシンを監視する

分析情報(VM insights)を有効化

分析情報(VM insights)を有効化します。
ログ収集の設定自体はデータ収集ルールで行います。
どのデータ収集ルールを利用するかは、分析情報(VM insights)で設定します。
そのためログ収集を行う為には、分析情報(VM insights)を有効化しておく必要があります。

分析情報(VM insights)の有効化手順についてはこちらで紹介しています。

Windowsのイベントログを収集するデータ収集ルールを作成

イベントログを収集する為にはデータ収集ルールを追加します。

データ収集ルールを作成する

※今回はエンドポイントは有効化していません。
※データ収集ルール対象となる仮想マシン(Azure VM)には拡張機能がインストールされる為起動状態である必要があります。

データ収集ルールを追加
モニターの左側のメニューでデータ収集ルールを選択します。
作成を選択します。
データ収集ルール作成画面が表示されます。
ルール名、対象のプラットフォーム名などを選択します。
リソースのタブでは取得対象のリソースを設定します。
リソースの追加で対象の仮想マシン(Azure VM)を選択します。
収集と配信のタブでは収集対象のデータソースを設定します。
データソースのタブでは収集対象のログを選択します。
ターゲットのタブではログ転送先のLog Analyticsワークスペースを選択します。
確認と作成に進みます。
確認画面です。
設定内容を確認後に作成を選択します。
しばらくするとターゲットに設定したLog Analyticsワークスペースにイベントログの収集が開始されます。

データ収集ルールで仮想マシンを追加

同じデータ収集ルールを複数の仮想マシン(Azure VM)に適用出来ます。
イベントログの収集ルールを設定した場合はAzureMonitorWindowsAgentの拡張機能のみインストールされます。

データ収集ルールにリソースを追加
左側のメニューでリソースを選択します。
追加を選択します。
追加対象の仮想マシン(Azure VM)を選択します。
追加したリソースには拡張機能がインストールされます。
システム割り当て済みのマネージドIDも有効化されます。

収集対象のログを制限

収集対象のログをXPathクエリを利用して制限する事が出来ます。

Windows イベント ビューアーから XPath クエリを抽出する

基本で設定したログ収集の設定はXPathとして設定されています。

収集対象のログを制限
基本でイベントログ収集設定がXPathとして表示されています。
イベントIDを4624と4625を収集する場合の設定です。
指定したイベントログの条件はor条件として動作します。
既存の設定を削除後に収集対象のXPathのクエリを追加しています。

※XPathのクエリにはand条件やor条件も利用出来ます。

—広告—

イベントログをLog Analyticsワークスペースで確認

ログイン(RDP接続時)時のイベントログ

RDP(リモートデスクトップ)接続時のログを例に確認しています。
こちらに纏めていますので併せて見て頂けると有難いです。

イベントログをKQLクエリを使って検索

Log AnalyticsワークスペースのEventのテーブルにイベントログは保管されます。

Windows イベント レコードのプロパティ

 
イベントID4624のイベントログを検索します。
EventDataにXML形式でイベントログのデータが含まれている事が確認出来ます。

Event
| where EventID == 4624

parse_xml使ってEventDataをJSON形式に変換

EventDataはXML形式で1つの項目にデータが保管されています。

parse_xml()

parse_xml()を利用すると値をJSON形式に変換して要素単位にする事が出来ます。
EventDataをparse_xml()で変換したデータをEventData_xmlとして定義します。

parse_xml()を使う

Event
| where EventID == 4624
| extend EventData_xml = parse_xml(EventData)
| project TimeGenerated, EventData, EventData_xml

EventData_xmlを確認すると要素ごとに分解されている事が確認出来ます。

イベントログの値を抽出

parse_xml()を利用してJSON形式に変換した値からデータを取得します。

parse_xml()(戻り値)

イベントログ(SecurityのイベントID4624)のワークステーション名、ソースネットワークアドレス、ログオンタイプの値を取得してみます。
EventData_xml>DataItem>EventData>Dataの階層に値が含まれています。
今回はDataとして新しい列を定義したしたのちに各項目を取得します。

※例えば検索条件にwhere EventLog contains “Security"を追加するとセキュリティのイベントログのみに絞り込み出来ます。
※2つ目のKQLでは検索結果をログオンタイプ10のみに絞り込みしています。

イベントログ内の値を取得

Event
| where EventID == 4624
| extend EventData_xml = parse_xml(EventData)
| extend Data = EventData_xml.DataItem.EventData.Data
| project TimeGenerated, Data

Data内の5番目にTargetUserName、8番目にLogonType、11番目にWorkstationName、18番目にIpAddressが含まれている事が確認出来ます。

Event
| where EventID == 4624
| extend EventData_xml = parse_xml(EventData)
| extend Data = EventData_xml.DataItem.EventData.Data
| extend LogonType = Data[8][“#text"]
| extend WorkstationName = Data[11][“#text"]
| extend IpAddress = Data[18][“#text"]
| where LogonType == 10
| project TimeGenerated, WorkstationName, IpAddress ,LogonType

各項目の値は#textに含まれています。
それぞれの項目を指定して値を取得する事が出来ました。

※新しく追加した列をDataとしちゃってますが大目に見てください。

Azure Monitorでイベントログを監視

Log Analyticsワークスペースに収集したイベントログはAzure Monitorの監視設定に利用出来ます。
手順についてはこちらに纏めています。

—広告—

最後に

今回はWindows ServerのイベントログをLog Analyticsワークスペース(Azure Monitorログ)へ取り込んで検索する手順についてまとめてみました。
イベントログのデータ本文の項目取得には少し手間がかかりますが、各サーバーから取り込んだデータKQLで一括して検索する事が出来るので非常に便利かと思います。

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

RDP(リモートデスクトップ)接続元IPを例にイベントログについてはこちらにまとめています。
併せて見て頂けると有難いです。

仮想マシン(Azure VM)の接続状況についてはこちらにまとめています。
ログを利用する方法、メトリックを利用する方法について確認しています。

 

スポンサーリンク