テキストログ監視の誤検知について

いつもお世話になっております。

#Zabbixのバージョン:1.8.16
#ZabbixサーバのOS:CentOS
#ZabbixエージェントのOS:Windows2008

テキストログ監視について質問させて下さい。
最近以下のようなトリガーを追加したところ、ログファイルには「"S"」という文字列が出力されていないのに誤って検知されアラートが出力されている状況です。
検知された時間よりも前のログを確認しましたが「"S"」という文字列は出力されていませんでした。
※なお、このログには毎日かなりのログが出力されています。

■アイテム設定
タイプ     :Zabbixエージェント(アクティブ)
キー      :log[検知対象のログファイルのパス]
データ型    :ログ
アプリケーション:テキストログ

■トリガー設定
条件式   :{サーバ名:log[検知対象のログファイルのパス].str("S")}=1
イベント生成:ノーマル
深刻度   :致命的な障害

また、以前から設定していた以下のトリガーについては問題なく検知されている状況です。

■トリガー設定(問題なし)
条件式   :{サーバ名:log[検知対象のログファイルのパス].str("E")}=1
イベント生成:ノーマル
深刻度   :重度の障害

何か原因など分かりますでしょうか。
必要な情報などありましたら提示致しますのでよろしくお願い致します。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

そのような設定であれば、まず誤検知する可能性は低いと思います。
ログファイルの何らかの場所に「S」という文字が含まれていたは
ずです。

トリガー発生時に、{ITEM.VALUE}などのマクロを用いて、対象のロ
グの情報も合わせてアクションで通知させることも考えられますが、
1.8系では、特に大量のログが出力されているような環境ですと、
トリガー発生の時点の情報をアクションで正確に引き渡すことがで
きないので、再確認することも困難だと思われます。

このトリガー発生時点とアクションでのメッセージの対応のずれの
問題に関しては、Zabbix 2.0以降で改善されています。

繰り返しになりますが、ログには「S」という文字が含まれていた
可能性が非常に高いと思われますので、再度、ログを確認してみて
はいかがでしょうか?
ログが大量とのことですので、その量と設定によっては、実際に各
サーバでログが出力されて、それがZabbixサーバまで届くまでの時
間差が大きくなってしまう場合があります。
ですので、より長い時間範囲で再度ご確認ください。

最後に、Zabbix 1.8系はすでにサポートが終了しているため、不具
合や脆弱性の問題があっても、公式に修正されたバージョンはリリ
ースされません。
早急に、新しいバージョンへの移行を検討されることをお勧めしま
す。

ユーザー summer-09 の写真

TNK様

早速のご回答ありがとうございます。
再度過去を遡りログを確認しましたが「"S"」の文字は含まれておりませんでした。
※なお、検知したいのはダブルクォーテーションを含んだ「"S"」という文字列になります。

また、ログについて記載し漏れていた内容がありますので補足させていただきます。
監視対象のログについては一定の間隔でローテーションされており、実際に「"S"」が記載されていたログは既にサーバ上からは削除されているような状況です。

同じように設定している「"E"」の文字列は正しく検知されているのに、「"S"」では誤検知をしているのはどうもしっくり来ないのが現状です。。

また、Zabbixの新しいバージョンについては別途検討させていただきます。

ユーザー TNK の写真

既に削除されたファイルにあったという可能性は無いのですか?

ユーザー summer-09 の写真

TNK様

既に削除されたファイルには「"S"」という文字列は確かにありました。
※日付でいうと5/1の0:31に出力されていました。

トリガーの設定は出力された時間より後の5/1 16:00頃に実施しています。

ユーザー TNK の写真

現在の設定のままでは、「S」という文字があれば検知されます。
ダブルクォーテーションで必ず括られているという条件にはなって
いません。

ダブルクォーテーションで括られていることを条件とされたいので
あれば、正規表現を利用してみてください。

管理 -> 一般設定 の中のプルダウンで「正規表現」を選択して、

 "S" という文字が含まれる

という正規表現を作成して、その名前を利用して、関数regexp()の
引数に指定してください。

例えば、正規表現を「sstring」という名前を付けたなら、

 {サーバ名:log[検知対象のログファイルのパス].regexp(@sstring)}=1

というように設定します。

ユーザー summer-09 の写真

TNK様

正規表現は確かに利用していないので、一度正規表現を利用して設定してみます。
設定した結果は後ほどコメントさせていただきます。

#余談になりますが、一つ気になるのは逆に正しく検知できている「"E"」の方です。
#「E」という文字はログファイルに出力されているので、こちらも検知されてもおかしくはないですがされていない(「”E"」という文字列が検知されている)のが現状です。
#ただ今回の話とは少し内容が異なりますので、まずは正規表現の設定を行ってみます。

ユーザー summer-09 の写真

TNK様

先ほど正規表現を利用して設定し検証を行ったところ問題なく検知することが出来ました。
また、試しに今まで利用していた以下のトリガーについて確認したところ、TNK様の言う通り「S」という文字だけをログファイルに記入しても検知されることが確認出来ました。

 {サーバ名:log[検知対象のログファイルのパス].str("S")}=1

また、「"E"」については、正しく検知されているわけではありませんでした。
ログファイルを再度見直したところ、小文字の「e」については何度も出力されていましたが、大文字の「E」はこれまでに出力はされていませんでした。
私の認識不足で恐縮ですが上記のトリガーは検証の結果大文字と小文字を区別しているように見受けられるため、今まではたまたま大文字の「E」が記入されていなかったのであたかも正しく検知していただけだったようです。
こちらの方の設定も正規表現を利用して正しい形で設定し直すことに致します。

色々とご教示いただきありがとうございました。