ZabbixでWindowsのイベントログを監視する方法(ログオン検知を例に設定方法を確認)

Others,Windows,Zabbix

ZabbixでWindows Serverのイベントログを監視する場合の手順です。

Windows Serverへのログオンに関するイベントログを例として、Zabbixでイベントログを収集するためのアイテム作成、イベントログのフィルタリング設定、トリガー設定など、一連の手順を確認しています。
イベントログに関する、アイテムキーやトリガーの概要も紹介しています。

※手順確認には、Zabbixのバージョンは7.0LTS(7.0.17)を使用しています。
※手順確認には、Windows Server 2025 Datacenter Azure Editionを使用しています。
※今回は、Zabbix エージェント2を利用した場合の手順を中心に確認しています。
※リモートデスクトップ接続時のイベントログを検知する方法について確認しています。

スポンサーリンク

WindowsのイベントログをZabbixで収集するためのアイテム設定手順

イベントログ用のアイテムが用意されている

Zabbixには、Windows専用のアイテムがいくつか用意されています。
その中の1つに、イベントログを監視するためのキーがあります。

eventlog
eventlog.count

eventlogキーは、指定した条件に一致するイベントの内容を取得します。
主にイベントログの内容を監視するために使用します。
eventlog.countキーは、指定した条件に一致するイベントログの件数(行数)を取得します。

今回は、eventlogキーを使用してWindowsイベントログを監視する手順について確認します。

eventlogのアイテムキーの設定内容

eventlogのアイテムキーでは、イベントログ名やイベントレベルなどの条件を指定します。

eventlog

イベントログ名は必須項目で必ず指定する必要があります。

eventlogのアイテムキーの設定内容

eventlog[name,<regexp>,<severity>,<source>,<eventid>,<maxlines>,<mode>]

name イベントログ名を指定します。
System、Application、Securityなどのログ名を指定します。
regexp ログフィルタリング用の文字列です。
イベントログメッセージ本文に対してフィルタをかける場合に指定します。
正規表現も利用可能です。
severity イベントレベルを指定します。
Information、Warning、Error、Criticalなどの重要度が設定できます。
大文字と小文字は区別されません。
source イベントソースを指定します。
正規表現も利用可能です。
eventid イベントIDを指定します。
正規表現も利用可能です。
maxlines 1秒間に送信するログの行数を指定します。
この値はzabbix_agent2.confの設定値を上書きします。
mode アイテム登録時に過去のログを含めてすべてチェックするかどうかを指定します。
allまたはskipから選択できます。
skipを指定すると、アイテム登録時点以前のログはスキップされます。

※アイテムキーのフォーマットの説明については、こちらに記載されています。

アイテムキーのフォーマット

イベントログを取得するアイテムの作成手順

アイテムを新規作成する場合は、ホストのアイテム作成から開始します。

アイテムの作成

Systemのログをすべて取得する設定としています。
今回は、アイテム名をEventlog(System)としています。

※比較のためskipを指定していません。この場合、アイテム登録以前の過去ログも取得されるため注意が必要です。

イベントログを収集するアイテムを作成
対象ホストのアイテムを選択します。 ホストのアイテムを選択(ZabbixでWindowsのイベントログを監視するための設定手順)
アイテムの作成を選択します。 アイテムの作成を選択(ZabbixでWindowsのイベントログを監視するための設定手順)
新規アイテム作成画面が表示されます。
キーを選択します。
新規アイテム作成画面(ZabbixでWindowsのイベントログを監視するための設定手順)
アイテムキーの選択画面が表示されます。
タイプをZabbixエージェント(アクティブ)に変更します。
eventlogのアイテムキーを選択します。
eventlogのアイテムキーを選択(ZabbixでWindowsのイベントログを監視するための設定手順)
アイテムの名前を設定します。
キーのnameをSystemとします。
追加を選択します。
キーを設定してアイテムを追加(ZabbixでWindowsのイベントログを監視するための設定手順)

eventlog[System]

アイテムが作成されたことを確認できます。 アイテム一覧画面(ZabbixでWindowsのイベントログを監視するための設定手順)

アイテムで取得したイベントログを確認

作成したアイテムで、イベントログが収集されているかを確認します。
監視データのメニューにある、最新データから確認しています。

最新データ

収集したイベントログを確認

最新データで作成したアイテムのヒストリを表示します。
イベントログが収集されていることを確認できます。

modeにskipが設定されていないため、過去のイベントログの情報も取得されていることが確認できます。

最新データ画面(ZabbixでWindowsのイベントログを監視するための設定手順)
最新データ画面で収集したイベントログを確認(ZabbixでWindowsのイベントログを監視するための設定手順)

※最新データの表示は、他のメニューからも可能です。
※ローカル時間はWindowsイベントログの日時です。タイムスタンプはZabbixエージェントがイベントログを読み込んだ時間です。

eventlogのアイテムキーのmodeにskipを設定して確認

eventlogのアイテムキーのmodeにskipを設定した場合のログ収集状況を確認します。

収集したイベントログを確認
eventlogのアイテムキーのmodeにskipを設定します。 eventlogのアイテムキーのモードにskipを追加(ZabbixでWindowsのイベントログを監視するための設定手順)

eventlog[System,,,,,,skip]

最新データで収集されたイベントログを確認します。
アイテム作成後のイベントログのみが収集されていることを確認できます。
モードにskipを追加した場合のイベントログ収集状況(ZabbixでWindowsのイベントログを監視するための設定手順)

ログ監視間隔は短くする

手順では監視間隔を1分にしていますが、Zabbixエージェントによるログ監視では監視間隔を短くすることが推奨されています。
ログ監視では、Zabbixエージェント側でログをチェックし、Zabbixサーバー側にログを送信しています。
そのため、短い間隔でチェックした方が1回のチェック件数が少なくなり、処理負荷を平準化できます。

※Zabbixサーバー側の負荷なども確認しながら、監視間隔は設定します。

収集するログは件数は減らす

アイテムキーの設定に合致したログをZabbixエージェント側でチェックし、Zabbixサーバー側に送信します。
Zabbixサーバー側では、受信したログがトリガー条件に合致するか評価したり、データベースに書き込みを行います。
そのため、送信されるログが少ないほど、Zabbixサーバーの負荷を軽減できます。

—広告—

収集したイベントログを監視するための設定手順(Windowsへのログオンを例に確認)

アイテムで収集するWindowsへのログオンに関するイベントログ

収集対象となるイベントログです。
Windowsのログオンやログオン失敗のイベントログを収集する設定としています。

監視対象のイベントログ
イベントログチャネル Security
イベントソース Microsoft-Windows-Security-Auditing
イベントレベル 指定しない
イベントID 4624(正常なログオン)
4625(ログオンエラー)
対象のイベントログにフィルターした場合の例です。 取得対象となるWindowsのログオンに関するイベントログ(ZabbixでWindowsのイベントログを監視するための設定手順)

Windows Serverへのログオンに関するイベントログについては、こちらで紹介しています。

ログオンイベントのみを収集するためにイベントIDで絞り込んだアイテムを作成

イベントログを収集するアイテムキーを作成します。
eventlogのアイテムキーではソースとイベントIDで絞り込みを行っています。
データ型はログ、監視間隔は1sとしています。
アイテム名はEventlog(Logon)としています。

イベントログを収集するアイテムを作成
キーにeventlogを設定したアイテムを作成します。
イベントIDとソースを指定しています。
Windowsのログオンに関するイベントログを取得する場合のアイテム設定(ZabbixでWindowsのイベントログを監視するための設定手順)

キーの設定値

eventlog[Security,,,"Microsoft-Windows-Security-Auditing",4624|4625,,skip]

作成したアイテムで、イベントログが収集されていることを確認できます。
指定したソースやイベントIDで絞り込みされていることも確認できます。
アイテム一覧画面(ZabbixでWindowsのイベントログを監視するための設定手順)
Zabbixで取得したWindowsのログオンに関するイベントログ(ZabbixでWindowsのイベントログを監視するための設定手順)

イベントログに関するトリガー関数

イベントログに関するトリガー関数も用意されています。
イベントログメッセージ本文の内容を利用する場合は、他のログ監視と同様にfind関数を利用します。

イベントログに関するトリガー関数
logeventid イベントIDを指定します。
数値または正規表現で指定します。
一致する場合は1、一致しない場合は0が返ります。
logseverity イベントログのイベントレベルを指定します。
文字列または正規表現で指定します。
一致する場合は1、一致しない場合は0が返ります。
logsource イベントログのソースを指定します。
文字列または正規表現で指定します。
一致する場合は1、一致しない場合は0が返ります。

Windows Serverへのログオンを監視するトリガーを作成

ホストのトリガー作成から開始します。
作成したアイテムを利用して、トリガーを作成します。

トリガーの設定

今回は、2つのトリガー条件式をand条件で設定しています。

    • find関数を利用して、イベントログメッセージ本文に"ログオン タイプ: 10″が含まれる場合
    • logeventid関数を利用してイベントIDが4624に一致する場合

トリガー名はEventlog(Logon)(Success)としています。

※ログオン タイプ: 10は、ユーザーがリモートデスクトップでログオンした場合を示します。

ログオンを監視するトリガーを作成
対象ホストのトリガーを選択します。 対象ホストのトリガーを選択(ZabbixでWindowsのイベントログを監視するための設定手順)
トリガーの作成を選択します。 トリガーの作成を選択(ZabbixでWindowsのイベントログを監視するための設定手順)
新規トリガー作成画面が表示されます。
トリガー名を設定します。
条件式の追加を選択します。
新規トリガーの設定画面(ZabbixでWindowsのイベントログを監視するための設定手順)
トリガー条件式の設定画面が表示されます。
作成したイベントログのアイテムを選択します。
トリガー条件式の設定画面(ZabbixでWindowsのイベントログを監視するための設定手順)
トリガーの条件式設定画面でアイテムを選択(ZabbixでWindowsのイベントログを監視するための設定手順)
関数には文字列関数のfind()を選択します。 トリガーの条件式設定画面でfind関数を選択(ZabbixでWindowsのイベントログを監視するための設定手順)

最新の1カウントを指定します。
合致条件にはlike、文字列には"ログオン タイプ: 10″を指定します。
結果には1を指定します。

※合致条件likeは部分一致を意味します。
※結果1は合致した場合を意味します。

トリガーの条件式設定画面でfind関数を設定(ZabbixでWindowsのイベントログを監視するための設定手順)
条件式を追加します。 トリガーの設定画面でfindの条件式を追加(ZabbixでWindowsのイベントログを監視するための設定手順)

設定したトリガー条件式

find(/vm-01/eventlog[Security,,,"Microsoft-Windows-Security-Auditing",4624|4625,,skip],#1,"like","ログオン タイプ: 10″)=1

条件式が追加されていることを確認します。
変更を選択して、2つ目の条件式を設定します。
トリガーの設定画面で条件式が追加された状態(ZabbixでWindowsのイベントログを監視するための設定手順)

トリガー条件式の設定画面が表示されます。
履歴関数のlogeventid()を選択します。
値には対象のイベントIDである4624を設定します。
結果には1を指定します。

※結果1は合致した場合を意味します。

トリガー条件式の設定画面でlogeventidの関数を選択(ZabbixでWindowsのイベントログを監視するための設定手順)
トリガー条件式の設定画面でlogeventidの関数を設定(ZabbixでWindowsのイベントログを監視するための設定手順)
条件式をand条件で追加します。 トリガーの設定画面でlogeventidの条件式を追加(ZabbixでWindowsのイベントログを監視するための設定手順)

追加したトリガー条件式

logeventid(/vm-01/eventlog[Security,,,"Microsoft-Windows-Security-Auditing",4624|4625,,skip],,4624)=1

今回は、正常性イベントの生成はなしを選択し、手動クローズを許可にチェックを入れています。
追加を選択します。

※障害イベント生成モードの設定については、後ほど確認します。

Windowsのイベントログを検知するトリガーを追加(ZabbixでWindowsのイベントログを監視するための設定手順)

設定したトリガー条件式

find(/vm-01/eventlog[Security,,,"Microsoft-Windows-Security-Auditing",4624|4625,,skip],#1,"like","ログオン タイプ: 10″)=1 and logeventid(/vm-01/eventlog[Security,,,"Microsoft-Windows-Security-Auditing",4624|4625,,skip],,4624)=1

トリガーが追加されたことが確認できます。 トリガー一覧画面(ZabbixでWindowsのイベントログを監視するための設定手順)

対象となるイベントログを発生させて障害検知を確認

監視対象のWindowsホストでログオンのイベントログを発生させ、Zabbixで障害検知できるかを確認します。

障害検知を確認
ログオンに関する障害が検知されていることを確認できます。 Windowsのログオンイベントを障害検知した場合(ZabbixでWindowsのイベントログを監視するための設定手順)
障害検知したイベントの障害画面(ZabbixでWindowsのイベントログを監視するための設定手順)
イベントログを確認します。
Zabbixに収集されたイベントログに基づき、検知されていることが確認できます。
Windowsのログオンに関するイベントログ(ZabbixでWindowsのイベントログを監視するための設定手順)
Zabbixで収集したWindowsのログオンイベント(ZabbixでWindowsのイベントログを監視するための設定手順)

※イベントログが発生したローカル時間ではなく、Zabbixに収集されたログのタイムスタンプが障害検知時間となります。

ログオンエラーのイベントログを監視するトリガーを作成

Windows Serverへのログオン時のエラーを検知するトリガーを作成します。
logeventidのトリガー関数を利用して、イベントIDが4625のログを収集した場合に障害として検知するように設定しています。

ログオンエラーのイベントログを監視するトリガーを作成
logeventidのトリガー関数を利用し、イベントIDが4625のログを収集した場合に検知するように条件式を設定します。 Windowsのログオンエラー検知する場合のトリガー設定(ZabbixでWindowsのイベントログを監視するための設定手順)

設定したトリガー条件式

logeventid(/vm-01/eventlog[Security,,,"Microsoft-Windows-Security-Auditing",4624|4625,,skip],#1,4625)=1

トリガーが作成されていることを確認できます。 トリガー一覧画面(ZabbixでWindowsのイベントログを監視するための設定手順)

ログオンエラーの検知を確認

監視対象のWindowsホストでログオンエラーのイベントログを発生させ、Zabbixで障害検知できるかを確認します。

ログオンエラーの検知を確認
イベントログが収集されていること、障害が検知できていることを確認できます。 Windowsのログオンエラー検知した場合のイベント詳細(ZabbixでWindowsのイベントログを監視するための設定手順)
Windowsのログオンエラー検知した場合の最新データ画面(ZabbixでWindowsのイベントログを監視するための設定手順)

正常性イベントについて

正常性イベントの生成は、障害が復旧したと判断する条件です。

トリガーイベントの生成

ログ監視の場合は、復旧とみなすログの条件式を指定します。
条件式を指定した場合は、検知対象外のログを収集した際に、自動的に障害が復旧します。

今回はログオンを監視するため、復旧に該当するログが存在しないため、正常性イベントはなしを選択しています。

※ログアウトに関するログを収集して復旧させる方法もあります。

手動クローズについて

通常は、障害状態から復旧したと判断された場合、イベントは自動的にクローズされます。
クローズの条件式が複雑な場合などは、手動でクローズする設定を利用します。

問題の手動クローズ

今回のように、正常性イベントの生成をなしに設定した場合は、自動的にクローズされません。
そのため、手動クローズを許可する必要があります。

障害イベント生成モードについて

障害イベントの生成モードには単一と複数があります。

障害イベント生成モード
単一 最初の障害を検知した場合のみ、イベントを生成します。
連続して障害となるログを収集した場合は、最初の1件だけが障害イベントとして生成されます。
複数 障害となるログを収集するたびにイベントを生成します。
連続して障害となるログを収集した場合は、その都度障害イベントが生成されます。

障害イベント生成モードを複数に設定して連続して障害を検知できるかを確認

今回のように、連続して検知したい場合は、障害イベント生成モードを複数に設定しないと、連続した障害が発生した際に見過ごされる可能性があります。
また、手動で障害をクローズする場合は、クローズするまで次の障害が検知されません。
障害イベント生成モードを複数に設定し、連続した障害イベントが生成されることを確認します。

障害イベント生成モードを複数にして確認
トリガーの障害イベント生成モードを複数に変更します。 トリガーで障害イベント生成モードを複数に設定した場合(ZabbixでWindowsのイベントログを監視するための設定手順)
障害が復旧する前に、次の障害が検知されていることを確認できます。 障害イベント生成モードを複数に設定した場合の障害検知画面(ZabbixでWindowsのイベントログを監視するための設定手順)

—広告—

最後に

今回は、Windows Serverへのログオンに関するイベントログを例として、Zabbixでイベントログを監視する手順を確認しました。
イベントログに関連するアイテムキーやトリガーも用意されており、簡単に設定できるようになっていることが確認できました。

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

ZabbixでLinuxのログを監視するための手順については、こちらで紹介しています。

自動登録アクションを利用したホストの自動登録手順については、こちらで紹介しています。

Zabbix エージェントのインストールや暗号化通信の有効化手順については、こちらで紹介しています。

Zabbixのアクションのメール送信でSendGridを使う方法は、こちらで紹介しています。

Azure Monitorを利用してWindows Serverのイベントログを監視する手順については、こちらで紹介しています。

スポンサーリンク