ログファイル内の特定の文字列を監視するトリガーの動作について
お世話になります。
当方Zabbix初心者です。初めて質問させていただきます。
Windowsホスト上のログファイル内の特定の文字列を監視するアイテム、トリ
ガーを作成しましたが、トリガーが正しく動作しません
○事象
・「正常」のイベントは発生しますが「障害」のイベントが発生しません。
・Windowsホスト側のzabbix_agentd.logにはエラーは出力されていません。
○作成したいトリガーの仕様
1.ログに特定の文字列が新たに出力されたら「障害」とする。
2.1.の後、ログに特定の文字列が新たに出力されていない状態が180秒間
継続したら「正常」とする。
○Zabbixで設定した内容
[アイテム]
名前:Flow-Service-info.log
タイプ:Zabbixエージェント (アクティブ)
キー:
log[D:\Program Files\Votiro\SDS-Flow\Logs\Flow-Service-info.log,OutOfMemoryException,,,skip]
データ型:ログ
更新間隔(秒):5
ヒストリ保存期間(日):7
アプリケーション:-なし-
有効:チェック
[トリガー]
名前:OutOfMemoryException Alert
条件式:
{Flow Server:log[D:\Program Files\Votiro\SDS-Flow\Logs\Flow-Service-info.log,OutOfMemoryException,,,skip].nodata(180)}=0 and {Flow Server:log[D:\Program Files\Votiro\SDS-Flow\Logs\Flow-Service-info.log,OutOfMemoryException,,,skip].str("OutOfMemoryException")}=1
有効:チェック
○監視対象のログファイルの内容(抜粋)
6268-13 | 21/01/2018 11:56:39.302 | 5 Error | Add Item Failed
Item ID: 0
System.OutOfMemoryException: プログラムの実行を続行するための十分なメモリがありませんでした。
○Zabbixの環境
OS:CentOS7
Zabbix:3.0.10
解決方法をご存知の方がいらっしゃいましたらご教示ください。
よろしくお願いいたします。
saka - 投稿数: 4
自己解決しましたので報告します。
設定ではなく、テストの方法が良くなかったようです。
監視したい文字列を、ログファイルに手動で追記してテストしていたところ、今回の事象が発生していました。
ログファイルにバッチファイルにより自動で追記してテストしたところ、想定どおりの動作になりました。
大変お騒がせしました。
saka - 投稿数: 4
その後テストを続けたところ、動作が不安定で、監視したい文字列をログファ
イルにバッチファイルにより自動で追記しても、やはり事象が発生することが
判りました。
あらためまして、解決方法をご存知の方がいらっしゃいましたらご教示くださ
い。
度々申し訳ございませんが、よろしくお願いいたします。
TNK - 投稿数: 4769
トリガーの設定内の「障害イベントを継続して生成」はどのように
設定されていますか?
チェックしていない場合、トリガーが障害の状態だと新たに条件に
合致する行がログに出力されてもイベントは発生しないので、アク
ションも実行されません。
ただし、チェックすると、今度はnodata()を条件式に使用されてい
るので指定した時間が経過するまで、30秒間隔で通知されると思い
ます。
短くても通知が重複する場合がありますが、障害イベントを継続し
て生成にチェックして、nodata()の引数の時間を30秒程度に短くし
て対応するか、ログのアイテムで取得時のフィルタリングを止める
といった対応方法が考えられるのではないでしょうか?
saka - 投稿数: 4
ご教示ありがとうございます。
トリガーの設定内の「障害イベントを継続して生成」はチェックしていません
でした。
チェックしない状態でテストしますと、トリガーが正常の状態に戻ってから新
たに条件に合致する行がログに出力されてもイベントが発生しませんでした。
チェックした状態でテストしますと、ご指摘のとおり、nodata()で指定した時
間が経過するまで30秒間隔でイベントが複数回発生しました。
イベントを1回のみ発生させることができるかどうか、ご教示いただいた方法
で再度テストしてみます。