SNMPTrapトリガーの設定でステータスが「不明」となる
お世話になっております。
L3スイッチ、L2スイッチのネットワーク機器からのSNMPトラップを監視設定を行っています。
特定のスイッチにおいて、トリガーの設定を行うとステータスが「不明」となってしまいます。
不明:Cannot evaluate function "xx.xx.xx.xx:snmptrap.fallback.regexp(.)".
ただし、以下の監視設定で問題なく監視が出来ているものも存在していますので、
アイテム及びトリガー設定には問題ないのかと思われるのですが、以下のトリガーのみ
設定した場合は、「有効」となります。
{**.**.**.**:snmptrap.fallback.regexp(.)}=1
条件式をAND条件など繋いでいると不明になっているようなのですが、
同様の事象など情報や確認事項などございましたらご教示の程よろしくお願いいたします。
【zabbix環境】
zabbix Server 2.2.8
OS:RHEL6(2.6.32-431.3.1.el6.x86_64)
【監視設定】
以下のアイテムとトリガーを設定しています。
■アイテム
タイプ:SNMPトラップ
キー:snmptrap.fallback
ホストインターフェース:**.**.**.** :161
データ型:ログ
■トリガー
条件式:
{**.**.**.**:snmptrap.fallback.regexp(.)}=1&{**.**.**.**:snmptrap.fallback.nodata(300)}=0
または
{**.**.**.**:snmptrap.fallback.regexp(.)}=1&({**.**.**.**:snmptrap.fallback.time(0)}<{$WATCH_END}|{**.**.**.**:snmptrap.fallback.time(0)}>{$WATCH_START})
KAZ - 投稿数: 1085
zabi0227さん
トリガーが不明になるのはrトリガー条件式の評価がうまく行ってなものとなります。
regexpはデータが取得できていないと不明になるかと。
zabi0227 - 投稿数: 7
KAZさん
ご指摘ありがとうございます。
確かに、今回トリガーを作成した直後で、トラップとなるデータも存在しない状況でした。
一度、トラップすることで、ステータスが戻り正常に動作するようになりました。
トリガー作成直後の検知については考慮不足でした。
続けてのご質問で恐縮ですが、regexp(.)で監視機器のトラップをすべて検知し
Criticalとなるもののみ、アラートするようにしています。今回の挙動を考慮し
トリガーの条件式をこのようにした方が良いなど、より良い方法がございますでしょうか。
■snmptt.conf
--------------------------------------------------------------
### リンクダウントラップ ###
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Critical
FORMAT ZBXTRAP $aA Link down on interface $1. Admin state: $2. Operational state: $3 :OtherMessage:$4 :$5
### 上記に当てはまらなかったトラップ ###
EVENT general .* "General event" Normal
FORMAT ZBXTRAP $aA $ar にて未定義のイベント受信 $-*
--------------------------------------------------------------
KAZ - 投稿数: 1085
zabi0227さん
↓こっちのほうが良いかと。
{**.**.**.**:snmptrap.fallback.regexp(.)}=1&{**.**.**.**:snmptrap.fallback.nodata(300)}=0
※:エスケープ文字で崩れていたのを修正しました。2015/03/12 14:23
できるだけtimerプロセスから実行される時刻系の関数(nodata, date, dayofmonth, dayofweek, time, now)と其の他を混ぜない方が
安定するかと思います。
zabi0227 - 投稿数: 7
KAZさん
ご回答ありがとうございます。
「=0」を追加することで、回避する方法がありましたね。
>できるだけtimerプロセスから実行される時刻系の関数(nodata, date, dayofmonth, dayofweek, time, now)と其の他を混ぜない方が
>安定するかと思います。
今回、設定する監視は、特定の曜日の特定の時間帯のみ非監視とし以外を監視とする設定にする必要があるので、
dayofweek, timeの関数を付けて設定しています。そのほかの方法で、実現する方法がありますでしょうか?
KAZ - 投稿数: 1085
zabi0227さん
すいません、HTMLエスケープ文字で崩れてました。
zabi0227さんが投稿された条件式も崩れていたので直しておきました。
" & < > はフォーラムに書き込み時にエスケープしないと崩れてしまいますのでお気をつけ下さい。
「=0」を追加することで、回避する方法がありましたね。
申し訳ないです、訂正しました。
訂正したやつはregexpとnodata使うやつです。
今回、設定する監視は、特定の曜日の特定の時間帯のみ非監視とし以外を監視とする設定にする必要があるので、
dayofweek, timeの関数を付けて設定しています。そのほかの方法で、実現する方法がありますでしょうか?
2.2ではメンテンス期間で対応してないので、dayofweek, timeで対応するか、
検知してもメール飛ばないだけでいいなら、メデイアの設定で「有効な時間」で飛ばしていい時間だけに絞るという手があります。
zabi0227 - 投稿数: 7
KAZさん
>" & < > はフォーラムに書き込み時にエスケープしないと崩れてしまいますのでお気をつけ下さい。
文字崩れしていたとのことで、お手数をおかけしました。
>2.2ではメンテンス期間で対応してないので、dayofweek, timeで対応するか、
> 検知してもメール飛ばないだけでいいなら、メデイアの設定で「有効な時間」で飛ばしていい時間だけに絞るという手があります。
dayofweek, time以外にもメデイアの設定で「有効な時間」でメールを飛ばさないという方法もあったのですね。
情報ありがとうございました。