アラート通知の設定方法に関して

以下の方法でメールでのアラート通知を実施したいのですが、実現可能でしょうか。
実現可能であれば、設定方法を教えてください。

<バージョン>
zabbix 2.4

<実現したいこと>
Windowsのイベントログにて、ERRORメッセージをzabbixで検知し、メールでアラート通知を実施。
ただし、ある一定期間(例:30秒間)に同一エラーMSGが複数回zabbixで検知した場合は、
メールの通知は一回のみとしたい。

<現状の設定値>
●アイテム
更新間隔:30秒
ヒストリ間隔:90日
キー:eventlog[Application,,"ERROR"]

●トリガー
{hangyoun:eventlog[Application,,"ERROR"].logseverity()}=4 and {hangyoun:eventlog[Application,,"ERROR"].nodata(30)}=0

●アクション(例)
トリガー名:{TRIGGER.NAME}
発せ時刻:{EVENT.DATE}
ホスト名:{HOSTNAME}
イベントID:{EVENT.ID}
イベントレベル:{ITEM.LOG.NSEVERITY}

Item values:

イベントMsg : {ITEM.VALUE1}

現状の設定では、想定通り行っていません。また、よく下記のような謎なアラートが通知されます

トリガー名:Win_Errlog
発せ時刻:2014.10.15
ホスト名:*UNKNOWN*
イベントID:5314
イベントレベル:*UNKNOWN*

Item values:
イベントMsg : *UNKNOWN*

上記ログが出力される理由も分かれば、教えてください。

コメント表示オプション

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

こうじゃないですかね?

●トリガー
{hangyoun:eventlog[Application,,"ERROR"].str("ERROR")()}=1 and {hangyoun:eventlog[Application,,"ERROR"].nodata(30)}=0
障害イベントを継続して生成:チェックoff

現状の設定では、想定通り行っていません。また、よく下記のような謎なアラートが通知されます
UNKNOWNは(nodata使ってるので)データ取れてないじゃ?
で、nodata(30)の条件でトリガーに反応して障害->正常になってイベント発生
アクション条件にそのイベントが合致してメール発報と言う流れかと…
ユーザー KAZ の写真
hangyounさん

すいません。条件式はあってますね。

{hangyoun:eventlog[Application,,"ERROR"].logseverity()}=4 and {hangyoun:eventlog[Application,,"ERROR"].nodata(30)}=0
「障害イベントを継続して生成:チェックoff」がどうなってるか確認して下さい。

で、検知だけ投げたいならアクションの条件を障害を検知した時のみにして下さい。
トリガーの値 = 障害

TNKさんフォローありがとうございます。
ユーザー hangyoun の写真

コメントありがとうございます。
頂いた設定をしてみてテストしてみたのですが、今度は以下のような事象が発生します。

<今回設定した項目>
・障害イベントを継続して生成ボタンを外す
・トリガーの値=障害 ⇒これはもともと設定されてました。

<テスト1>
eventcreateでtestメッセージを連続して2回実行したところ、コンソール上では2回表示され、
メールでは一回のみ通知されました。
⇒この結果に関しては、希望通りです。

<テスト2>
eventcreateで以下の順で連続してMSG出力を実行。
test⇒test2⇒test3⇒test
この場合、コンソール上では4回ともエラー検知しましたが、
メールではtestメッセージ1回のみ通知されました。
⇒希望としては、test,test2,test3それぞれ一回のみ通知されるのが希望だったのですが。。。

これは解消するのは仕様上難しいのでしょうか。
ご存じであれば、教えてください。

業務上想定しているのは、以下になります。
・同様のメッセージを一定時間(例:30秒)で複数回検知した場合は、1回メールで通知
・上記を除き、メッセージは全てメールで通知

現状の設定では難しいのでしょうか。
なんとなく、nodataを使うと上記想定している動作は完全には機能しないように思います。。

ユーザー TNK の写真

すでにKAZさんが回答を書かれていますが、一応ご参考まで。

ホスト名の部分は、HOST.NAMEと間にピリオドを入れてみてくださ
い。
イベントレベルの部分は、トリガーに複数の式を組み合わせた条件
式を指定されているのですから、ITEM.LOG.NSEVERITY1というよう
に、最後に数字をつけてみてください。

ご参考:マニュアル
  https://www.zabbix.com/documentation/2.4/manual/appendix/macros/supporte...

それでもおかしいようであれば、KAZさんも書かれている通り、
eventlog[]の値の変化ではなく、nodata()によるイベントの発生だ
と思われます。
トリガーは、障害発生時と障害回復時の両方でイベントが発生する
ようになっていますし、nodata()は引数に関係なく30秒間隔で引数
に指定された時間が経過しているかチェックされるようになってい
ます。

つまり、「継続してイベントを生成」にチェックが入っていたり、
アクションでリカバリ時も実行するように指定していれば、nodata()
でのイベント発生でもアクションが実行されることになります。
障害発生か回復かを確認するためにも、TRIGGER.STATUSの値を確認
してみてください。

あと、nodata()の副作用に関しては、以下のURLなどもご参照くだ
さい。

ご参考:Windowsログ監視の設定について
  http://www.zabbix.jp/node/2758

ログ系のアクションで注意が必要となると思われるのは、ログの場
合、リカバリをnodata()で行うなら特に、障害自体が回復して復旧
してトリガーの状態が正常に戻るわけではないので、リカバリメッ
セージは不要となると思います。
つまり、アクションに関しては、「リカバリメッセージ」にはチェ
ックしないと思います。

しかし、他のトリガーでは、リカバリ時のメッセージ送信が必要と
なる場合があると思いますので、その場合は、アクションを通常の
トリガー用とeventlogなどログ系用と分けるといいと思います。

実現方法としては、例えば、ログ用のトリガーに関しては、特定の
文字列を含ませるように名前をつけて、アクションの実行条件で、
トリガー名にその特定の文字列が含まれるかどうかの実行条件を追
加すれば実現できると思います。

ご確認ください。

ユーザー hangyoun の写真

TNKさん、コメントありがとうございます。
KAZさんにも同様の返信をさせていただきましたが、以下の問題が発生しています。

<今回設定した項目>
・障害イベントを継続して生成ボタンを外す
・トリガーの値=障害 ⇒これはもともと設定されてました。
「リカバリメッセージ」はチェック外れています。⇒これはもともと設定されてました。

<テスト1>
eventcreateでtestメッセージを連続して2回実行したところ、コンソール上では2回表示され、
メールでは一回のみ通知されました。
⇒この結果に関しては、希望通りです。

<テスト2>
eventcreateで以下の順で連続してMSG出力を実行。
test⇒test2⇒test3⇒test
この場合、コンソール上では4回ともエラー検知しましたが、
メールではtestメッセージ1回のみ通知されました。
⇒希望としては、test,test2,test3それぞれ一回のみ通知されるのが希望だったのですが。。。

業務上想定しているのは、以下になります。
・同様のメッセージを一定時間(例:30秒)で複数回検知した場合は、1回メールで通知
・上記を除き、メッセージは全てメールで通知
・リカバリーのメッセージは不要(障害検知のみメールで通知)

現状の設定では難しいのでしょうか。
なんとなく、nodataを使うと上記想定している動作は完全には機能しないように思います。。
nodataの代替案等あれば、教えてください。