VM Insightsを利用してWindowsのイベントログをLog Analyticsに収集、検索
Windows ServerのイベントログをLog Analyticsワークスペース(Azure Monitor Logs)で収集するための設定手順です。
Windows Server上のイベントログをAzureのLog Analyticsワークスペースに送信して収集する方法および、収集したイベントログをLog Analytics上でKQL(Kusto Query Language)クエリ検索する手順を確認しています。
-
- 分析情報(VM insights)の有効化
- データ収集ルール(DCR)の作成
- イベントログ収集用のデータ収集ルールを作成
- データ収集ルールにリソースを追加
- 対象リソース(仮想マシン)をデータ収集ルールに関連付け
- Log Analyticsで収集したイベントログをKQLで検索
- parse_xml()関数などを利用し、イベントログの内容を取得
※本記事内では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※Windows Server 2022 Datacenter Azure Editionを利用しています。
※利用したリソース名は、log-test-01(Log Analyticsワークスペース)とtest-vm-01、02(仮想マシン)です。
分析情報(VM insights)のデータ収集ルールを使ってイベントログをLog Analyticsワークスペースに収集
イベントログの収集設定については、Microsoft Learnに詳細な手順が記載されています。
参照しながら、手順を確認します。
Azure Monitor を使用して Azure 仮想マシンを監視する
分析情報(VM insights)を有効化
分析情報(VM insights)を有効化します。
ログ収集の設定自体はデータ収集ルール(Data Collection Rule: DCR)で行います。
どのデータ収集ルールを利用するかは、分析情報(VM insights)で指定します。
そのため、ログ収集を行うためには、事前に分析情報(VM insights)を有効化しておく必要があります。
分析情報(VM insights)の有効化手順については、こちらで紹介しています。
Windowsのイベントログを収集するデータ収集ルールを作成
イベントログを収集するためのデータ収集ルールを追加します。
※今回はエンドポイントは有効化していません。
※データ収集ルールの対象となる仮想マシンには拡張機能がインストールされるため、起動状態である必要があります。
データ収集ルールで仮想マシンを追加
同じデータ収集ルールを複数の仮想マシンに適用できます。
イベントログの収集ルールを設定した場合は、AzureMonitorWindowsAgentの拡張機能のみがインストールされます。
データ収集ルールにリソースを追加 | |
左側のメニューでリソースを選択します。 追加を選択します。 追加対象の仮想マシンを選択します。 |
![]() |
追加したリソースには拡張機能がインストールされます。 | ![]() |
システム割り当て済みのマネージドIDも有効化されます。 | ![]() |
収集対象のログを制限
収集対象のログをXPathクエリを利用して制限することができます。
Windows イベント ビューアーから XPath クエリを抽出する
基本で設定したログ収集の設定は、XPathとして設定されています。
収集対象のログを制限 | |
イベントログ収集の内容がXPathとして表示されています。 | ![]() |
イベントIDが4624と4625の場合の収集設定です。 指定したイベントログの条件は、or条件として動作します。 既存の設定を削除した後、収集対象のXPathクエリを追加しています。 |
![]() |
※XPathのクエリでは、and条件やor条件が利用できます。
—広告—
イベントログをLog Analyticsワークスペースで確認
リモートデスクトップ接続時のイベントログ
RDP(リモートデスクトップ)接続時のログを例に確認しています。
リモートデスクトップ接続時のイベントログについては、こちらで紹介しています。
KQLクエリを使ってイベントログを検索
イベントログは、Log AnalyticsワークスペースのEventテーブルに保管されます。
KQLクエリを使って検索 | ||
イベントID 4624のイベントログを検索します。 EventDataにXML形式でイベントログのデータが含まれていることが確認できます。 |
|
|
![]() |
||
![]() |
parse_xml使ってEventDataをJSON形式に変換
EventDataはXML形式で1つの項目にデータが保管されています。
parse_xml()を利用すると、値をJSON形式に変換し、要素ごとに分割することができます。
EventDataをparse_xml()で変換したデータをEventData_xmlとして定義します。
parse_xml()を使ってJSON形式に変換 | |
|
|
ventData_xmlを確認すると、要素ごとに分解されていることが確認できます。 |
イベントログの値を抽出
parse_xml()を利用してJSON形式に変換した値からデータを取得します。
イベントログ(SecurityのイベントID 4624)のワークステーション名、ソースネットワークアドレス、ログオンタイプの値を取得します。
EventData_xml > DataItem > EventData > Dataの階層に値が含まれています。
今回は、Dataとして新しい列を定義したのちに各項目を取得します。
※検索条件にwhere EventLog contains “Security"を追加すると、セキュリティのイベントログのみに絞り込むことができます。
※2つ目のKQLでは、検索結果をログオンタイプ10のみに絞り込んでいます。
※新しく追加した列の名前をDataとなっていますが、無視してください。
Azure Monitorでイベントログを監視
Log Analyticsワークスペースに収集したイベントログは、Azure Monitorの監視設定に利用できます。
設定手順については、こちらで紹介しています。
—広告—
最後に
今回は、Windows ServerのイベントログをLog Analyticsワークスペース(Azure Monitor Logs)へ取り込んで検索する手順について角煮しました。
イベントログのデータ本文の項目取得には少し手間がかかりますが、各サーバーから取り込んだデータをKQLで一括して検索することができるので、非常に便利かと思います。
引き続き、いろいろ試してみたいと思います。
仮想マシンとLog Analyticsワークスペースの接続状況の確認方法については、こちらで紹介しています。
ログを利用する方法とメトリックを利用する方法、それぞれについて紹介しています。