複数ログファイルにて1時間以内に5件以上ログが出力された際の条件設定について
■Zabbixバージョン
Zabbix 3.0.10
■やりたいこと
複数ファイル合計で、1時間以内に特定の複数の文字列が5件以上出力された場合、1件障害検知させたい。
また、5件目検知以降は1時間以内であれば特定文字列出力毎に都度検知させたい。
アイテムとしては、正規表現@ERRORに該当するものを全て取得したい
トリガー条件で更に、同じ行にaaa,bbb,cccの文字列全てを含む場合に件数カウントしたい。
■ご教示頂きたいこと
Ver3.4以前はcountで正規表現が使えない為、現状は下記のように設定しテストしていますが
5件以上出力されたタイミングでログ出力件数分障害を検知してしまいます。
また、文字列aaaのみ含む行が5件出力されても障害検知する状態かと思われます。
{ホストA:logrt["/var/log/A_messages(|-\d{8})$",@ERROR].count(3600,aaa)} and
{ホストA:logrt["/var/log/A_messages(|-\d{8})$",@ERROR].count(3600,bbb)} and
{ホストA:logrt["/var/log/A_messages(|-\d{8})$",@ERROR].count(3600,ccc)} +
{ホストB:logrt["/var/log/B_messages(|-\d{8})$",@ERROR].count(3600,aaa)} and
{ホストB:logrt["/var/log/B_messages(|-\d{8})$",@ERROR].count(3600,bbb)} and
{ホストB:logrt["/var/log/B_messages(|-\d{8})$",@ERROR].count(3600,ccc)} +
{ホストC:logrt["/var/log/C_messages(|-\d{8})$",@ERROR].count(3600,aaa)} and
{ホストC:logrt["/var/log/C_messages(|-\d{8})$",@ERROR].count(3600,bbb)} and
{ホストC:logrt["/var/log/C_messages(|-\d{8})$",@ERROR].count(3600,ccc)}>5
継続してイベントを生成:チェック有
ログ出力時点で対象を絞ることや、ZabbixバージョンUPは難しい状況です。
やりたいこと全て叶えることは可能でしょうか。
何か良い方法がないかご教示頂けますと幸いです。
yk_taiko - 投稿数: 184
ログ出力時点で対象を絞ることや、ZabbixバージョンUPは難しいのであれば、
「文字列aaaのみ含む行が5件出力されても障害検知する状態かと思われます。」 の解決は
Zabbix 標準の機能だけではやりたいこと全て叶えることはできないと思います。
やりたいことの「特定文字列」の定義がわからないのですが、
条件に and をつけて、regexp(特定の文字列)=1 を付けてみてはどうでしょうか。