SNMPTrapによるリンクダウン検知時の該当ポート情報表示について

色々と過去のやり取りも検索したのですが、ズバリというのが見当たらなかったので質問させて頂きます。

NW機器からSNMPTRAPでリンクダウンTRAPを受けて、イベントとしてzabbix上で表示させる際に、
どのポートで発生したものかが分かるようにするためには
トリガー、条件式はどのようにしたらよいか教えて下さい。
zabbixver:2.4.5

現状以下の設定をしておりました。

トリガー名:リンクダウンが発生しました。|linkdown({ITEM.VALUE})
条件式:
({Template XXX:snmptrap[".1.3.6.1.6.3.1.1.5.3"].str("down")} = 1) and ({Template XXX:snmptrap[".1.3.6.1.6.3.1.1.5.3"].nodata(60)} = 0)

上がったには上がったのですが、
1つのNW機器から複数ポートのリンクダウンTRAPを受ける環境にあるため
これだとどのポートかが分からないと判断し、
引っかける文字列を”down”ではなく、”GigabitEthernet1/0/1”の様に直接引っかけて
該当ポート分トリガーを作るしかないかと考えております。
またこれだと、例えばポート1でリンクダウンを受けた際に、30秒後にポート2でリンクダウンを受けても
nodata関数の影響でzabbix上では何も表示されないという認識です。

トリガー数を増やすにも、機器数やポート数が多いため正直かなり手間であり、
また対象ポートが追加された場合、テンプレートも追加しないと
いけなくなるため、なるべくトリガー数を少なくしたいです。
関数等をうまく使えばいけるものなのでしょうか。

宜しくお願い致します。

コメント表示オプション

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

SNMPトラップで判断するのであれば、SNMPトラップ内のメッセージ
内の情報を見るしかありません。

詳細なメッセージの内容は、メーカーや機器の型番、ファームウェ
アのバージョンによっても異なる場合があったと思うので、送られ
てくるメッセージ内に問題の発生したポートを特定する情報がない
のであれば、トリガーでどのポートか判別することはできません。

具体的に送られてくるメッセージを確認してみてください。

もう一つの方法としては、各ポートの状態をポーリングすることが
できたと思いますので、その状態が変化した時にトリガーを発生さ
せるというのも1つの方法だと思います。

ユーザー heya の写真

単純には難しい(無理?)でしょうね。

参考までに、私のところではこんな感じでやっています。
・snmptt.conf では、PREEXEC を使う。
  FORMAT ZBXTRAP $aA インタフェース $p1 が停止しました 。
  PREEXEC /etc/snmp/get-description.pl $aA "$1" "$2" "$4"
・get-description.pl では、collect-descriptions.pl で事前に調べておいた ifIndex と ifDescr、ifAlias の対応表を読んで、該当するものを出力する。
・collect-descriptions.pl は、snmpwalk を使って ifDescr と ifAlias を調べ、ファイルに記録する。

もっとも、機器によって取れる値や OID は変わってくるので、その辺の調整(=プログラムの修正)は必要だと思います。

ユーザー monisan の写真

遅くなりすいません。

汎用的で簡単なやり方?の様なものはなく難しそうというのは理解しました。
SNMPポーリングでは、一応問題なく取れているのですが、
即時検知のほうが良いという判断でトラップによる検知を考えていました。

周りとも相談ですが
可能であればポーリングによる監視で済ませたいなと思います。

回答頂いたお二人ありがとうございました。