今回は、Zabbix5.0でZabbix Agentを使用したテキストログ監視を実装してみます。
前提条件
設定を行うZabbix Serverのバージョンは5.0となります。
テキストログ監視を行うサーバはWindows Server 2019でZabbix Agentを導入済み、Zabbix上でホストの追加設定を行なった状態となります。
Zabbix Serverのインストールについては、こちらの記事をご覧ください。
また、テキストログとして、Windows Server上の以下のパスにファイルを配置しています。
- ファイルパス : C:¥zabbix¥Log.txt
- ファイルの内容 : NG
Zabbixアイテム追加

ZabbixのWebコンソールにログインし、[設定]-[ホスト]-[設定を行うホスト名]を選択します。

ホストの[アイテム]タブより、[アイテムの作成]を選択します。

[アイテム]の名前に任意のアイテム名を入力し、[キー]の[選択]を押下します。

[標準のアイテム]より、[タイプ]を[Zabbix エージェント]を選択し、以下のアイテムを選択します。
- アイテム : vfs.file.regmatch[file,regexp,<encoding>,<start line>,<end line>]
このアイテムは、特定ファイル内の文字列を検索するアイテムで、ファイル内に該当する文字列が存在する場合は[1]を、該当する文字列が存在しない場合は、[0]を戻り値として返します。
構文 : vas.file.regmatch[検索するファイルのフルパス,検索文字列,文字エンコーディング(省略可),ファイルの検索開始行数(省略可),ファイルの検索終了行(省略可)]

今回は、以下のようにアイテムの設定を行いました。設定が完了したら、[作成]または[更新]を押下します。
- 名前 : 任意のアイテム名
- タイプ : Zabbix エージェント
- キー : vas.file.regmatch[C:¥zabbix¥Log.txt,OK]
- データ型 : 数値(整数)
アイテムの確認

Zabbixより、[監視データ]-[最新データ]を選択し、アイテム設定を行なったホストでフィルターを掛けます。
作成したアイテムから、最新の値をチェックします。
今回は、事前にファイルに[NG]と記載していたため、アイテムの検索条件に合致しないため、最新の値が[0]となっています。

次に、監視サーバ上に配置した[Log.txt]ファイルを編集します。

ファイルの内容を[OK]にして、保存します。

今回は、監視の間隔が1分のため、ファイルを変更してから、1分程度で最新の値が更新され、[1]となりました。
トリガー設定

Zabbixより、[設定]-[ホスト]より対象のホストを選択し、[トリガー]タブを押下します。
[トリガーの作成]を選択します。

トリガーより、新規のトリガーを作成していきます。
今回は、ログファイルにNGが含まれている場合は、アラートを発報しNGが消えたら解決報を発報するトリガーを設定していきます。

トリガーで以下の設定を行い、[条件式]の[追加]を選択します。
- 名前 : 任意のトリガー名(トリガー名がメールのサブジェクトになります。)
- 深刻度 : 重度の障害(このレベルだとメールが発報される環境のため、このレベルにしています。)

[トリガー条件式]より、[アイテム]-[選択]を押下します。

[アイテム]より、作成したアイテムを選択します。

[トリガー条件式]より、以下の設定を行い、[挿入]を選択します。
- アイテム : 作成したアイテム
- 関数 : last() – 最新値
- 最新の(T) : –
- タイムシフト : –
- 結果 : =0
結果の部分は、トリガーが引かれる条件値となります。
アイテムの戻り値が[結果]の条件と合致した場合、トリガーが引かれ、アラートが発報されます。

[トリガー条件式]を挿入すると、[条件式]に自動的に条件式が挿入されるため、値が挿入されていることを確認します。

次に、アラートの復旧条件を設定します。
[正常イベントの生成]より、[復旧条件式]を選択し、[復旧条件式]より[追加]を選択します。

ここでも[トリガー条件式]が表示されるため、[アイテム]-[選択]を押下します。

[アイテム]より、作成したアイテムを選択します。

今回は、障害の復旧条件をトリガーとして設定したいため、以下の設定を行います。
- アイテム : 作成したアイテム
- 関数 : last() – 最新値
- 最新の(T) : –
- タイムシフト : –
- 結果 : =1
障害の条件式の際には、アイテムの戻り値が0の場合、障害としてトリガーを設定しましたが、今度はアイテムの戻り値が1の場合、復旧としたいため、結果の値を1としています。
設定が完了したら、[挿入]を押下します。

挿入が完了すると、[復旧条件式]に式が挿入されるため、確認します。
また、このアラートを手動でクローズしたい場合は、[手動クローズを許可]にチェックを入れ、[追加]を選択します。

ホストの[トリガー]タブより、設定したトリガーが存在し、有効化されていることを確認します。
アラート発報試験

Windowsのログを選択して、編集します。
現在、このログには[OK]と出力されています。

内容を[NG]と書き換え、保存します。

Zabbixより、[監視データ]-[最新データ]より、該当のサーバの作成したアイテムの最新データを確認します。
該当のアイテムは1分毎にチェックが入っているため、ログファイルの変更後、1分程度で最新の値が更新されます。

アイテムの値が更新されたら、[監視データ]-[障害]より、作成したトリガーのアラートが発報されていることを確認します。

また、障害時にメールアラートも発報させている場合は、メールも確認します。

アラートの確認後、該当のログファイルを再度編集し、アラートの解決報が飛ぶことを確認したいと思います。

ログファイルを[NG]→[OK]に書き換え、保存します。

[監視データ]-[障害]より、作成したトリガーのアラートが解決済となっていることを確認します。
この時もアイテムの取得タイミングが1分間隔のため、1分程度待機します。

障害が解決されると、アラートの解決報がメールで飛ぶため、そちらも確認します。
以上で、ZabbixによるWindowsのテキストログ監視実装手順は終了です。
まとめ
今回は、前に構築したZabbix5.0の環境にWindowsのテキストログ監視を実装してみました。
Zabbix ServerがLinuxでも特別なコンポーネントは必要なくWindowsのテキストログ監視を使用することができました。
このようなWindowsテキストログ監視については、PowerShellやバッチで処理を行い、結果を監視するなどの場合に力を発揮しそうです。
夜間に実行されるバッチ等の結果を直接翌朝に確認しなくてもログ監視ができるため、人のコスト削減が可能になると思います。
最後まで閲覧ありがとうございます。
他にも技術系の記事を記載しているため、お時間がありましたら見ていってください。
コメント