同時に複数行出力されるログの特定の行をメールに記載したい
お世話になっております。
対象サーバ上のログファイルに出力されるログの取得方法に関して
検知トリガー、メール通知アクションの設定方法をご教授いただけないでしょうか。
zabbixサーバ
OS : RHEL8.4
バージョン : 4.0.35
対象サーバ
OS : WindowsServer2012
監視対象となるログファイルはあるアプリケーションのログファイルとなっており、
「FATAL ERROR」という文言を含むログが出力された場合にzabbixにて検知し、
アラートメールを発報する流れとなっております。
トリガーの設定は下記の通りに設定しており、想定通りの流れでメール通知まで出来ております。
({Template for Apps Log:logrt["C:\inetpub\wwwroot\Logs\WEB\ErrFatal.log.*$",,SHIFT_JIS].count(30,"FATAL ERROR",,30)}>0)
and
(({Template for Apps Log:logrt["C:\inetpub\wwwroot\Logs\WEB\ErrFatal.log.*$",,SHIFT_JIS].count(30,"FATAL ERROR",,60)}=0)
or
({Template for Apps Log:logrt["C:\inetpub\wwwroot\Logs\WEB\ErrFatal.log.*$",,SHIFT_JIS].nodata(30)}=0))
しかし、タイトルにもありますように対象ログファイルには「FATAL ERROR」を含む行のほかに
「FATAL ERROR」が出力された同じタイミングで複数のエラーログが出力される為、
通知メールに載せたい「FATAL ERROR」行のエラーではなく、同時に出力された別のメッセージがマクロで取得され、
メールに記載されてしまいます。
※取得の例
2022/01/01 00:00:00 FATAL ERROR~~ ★★★この行をメールに記載したい
2022/01/01 00:00:00 AAAAA
2022/01/01 00:00:00 BBBBB ☆☆☆ この行が取得されてしまう
2022/01/01 00:00:00 CCCCC
2022/01/01 00:00:01 DDDDD
2022/01/01 00:00:02 EEEEE
2022/01/01 00:00:10 FFFFF
メール本文は下記の様に設定しています。
エラー発生環境:{HOSTNAME} ({IPADDRESS})
エラー検出時の値
ITEM value: {ITEM.VALUE} ★★★ここに「FATAL ERROR」を含むログメッセージ行を出力させたい
エラー検出日時:{EVENT.DATE} {EVENT.TIME}
最新の値(Last value1~10)
{{HOSTNAME}:{TRIGGER.KEY}.last(#1)} ★★★ここから10行に「FATAL ERROR」行が出力された以降の10行を出力させたい
{{HOSTNAME}:{TRIGGER.KEY}.last(#2)}
{{HOSTNAME}:{TRIGGER.KEY}.last(#3)}
{{HOSTNAME}:{TRIGGER.KEY}.last(#4)}
{{HOSTNAME}:{TRIGGER.KEY}.last(#5)}
{{HOSTNAME}:{TRIGGER.KEY}.last(#6)}
{{HOSTNAME}:{TRIGGER.KEY}.last(#7)}
{{HOSTNAME}:{TRIGGER.KEY}.last(#8)}
{{HOSTNAME}:{TRIGGER.KEY}.last(#9)}
{{HOSTNAME}:{TRIGGER.KEY}.last(#10)}
以上、よろしくお願いいたします。
TNK - 投稿数: 4744
FATAL ERRORの行を{ITEM.VALUE}で取得できるようにするには、ト
リガーの条件式を見直すことが必要だと思います。
現在の条件式では、過去にFATAL ERRORの行があった場合もトリガー
の条件式に合致してしまうのではないでしょうか。
あと、FATAL ERROR以降の10行という指定はできないと思います。
last()で#nを使用した場合、指定した過去の値を並べるだけで、必
ずFATAL ERROR以降の10行とはなりません。
yuhata - 投稿数: 5
TNK様
コメントいただきありがとうございます。
現時点では、今のトリガー条件式で過去のFATAL ERRORを検知するような動きはありません。
特定メッセージ以降の数行を指定しての値の取得は出来ない旨承知いたしました。