ログ監視で、同時に複数行検知時のメール通知内容について
OS : CentOS 8.2
zabbix_server : 5.0.2
30秒周期のアクティブチェックでログ監視をし、
検知した行をメールで通知する設定を行っています。
監視対象のログ(/var/log/foo.log)には、
ある条件を満たすファイルを見つけたときに、
「ファイル名 FOUND」
という行が出力されるようになっており、
出力された行ごとのメール通知を行いたいために、
現在は、トリガーを
[Template bar:log[/var/log/foo.log,FOUND].count(#1)}>0 としています。
(障害イベント生成モード:複数)
メール通知の設定としては、
メディアタイプのメッセージテンプレートのメッセージの
Operational data: {EVENT.OPDATA}
の部分で、検知した行を表示するようにしています。
30秒周期の間に、
-------------------
/xxx/AAA FOUND
/yyy/BBB FOUND
/zzz/CCC FOUND
-------------------
といったような3件の検知対象のログが出力されたときに、
メール通知は3件行われるのですが、
メールに設定されるのは、3件とも
Operational data: /zzz/CCC FOUND
となってしまっています。
トリガーを
[Template bar:log[/var/log/foo.log,FOUND].str(FOUND,#1)}=1 としても変わりませんでした。
最新データ上は
/xxx/AAA FOUND
/yyy/BBB FOUND
/zzz/CCC FOUND
の3件が表示されているのですが、
どのようにすれば、
Operational data: /xxx/AAA FOUND
Operational data: /yyy/BBB FOUND
Operational data: /zzz/CCC FOUND
という3件がメールで通知されるようになりますでしょうか?
TNK - 投稿数: 4769
メッセージ内で、マクロとして{ITEM.VALUE}を使用すれば良いと思います。
hige.no.papa - 投稿数: 53
早速のご回答ありがとうございます。
ご指摘の通りメッセージテンプレートに {ITEM.VALUE} を追加したところ、行毎の異なる情報が表示されるようになりました。
ただ、これまでは、メディアタイプのデフォルトのメッセージテンプレートを使用しており、
{EVENT.OPDATA} と {ITEM.VALUE} とでは、内容が異なるので、
できれば、すべての通知で共通となっているメディアタイプのメッセージテンプレートは従来のままとし、
このトリガーの通知だけ、{EVENT.OPDATA} の代わりに {ITEM.VALUE} を出力するようにしたいのですが、
そのようなことはできますでしょうか?
なお、現在は、アクションもすべて共通のもの1つを定義しているだけなのですが、
共通のアクションから、このトリガーだけを除外して、
このトリガー用のアクションを追加し、実行内容でメッセージのカスタマイズを行うようにすればできそうなのですが、
もっと簡単に実現する方法はありませんでしょうか?
TNK - 投稿数: 4769
他の障害でも同様にイベント発生時の値が必要なのであれば、メッ
セージテンプレート内の{EVENT.OPDATA}を{ITEM.VALUE}に入れ替え
るか、メッセージテンプレートに行を追加して、障害発生時のアイ
テムの値を出力する行として、{ITEM.VALUE}を使用すればよいので
はないでしょうか?
アクションやメディアを分けて、特定のトリガーだけ別のアクショ
ンを実行するようにすることで実現できるとは思いますが、ご認識
されている通り、設定や管理が面倒になってしまうと思います。
hige.no.papa - 投稿数: 53
ご回答ありがとうございます。
ひとまずは、{メディアタイプのテンプレートに ITEM.VALUE} を追加して、
他のメール通知での見え方を確認して、
分けたほうがいいと判断した場合にはアクションを分けようかと思います。