zabbix 2.2 での SNMPTrap 監視について

こんにちは。
世界中の掲示板や公式ドキュメントを見ているつもりなのですが解決できずにおりまして、
先ほどこちらのアカウントを作成しました。

snmptrapd.conf にて zabbix_trap_receiver.pl を呼ぶようにしております。

authCommunity log,execute,net xxxxxx
perl do "/usr/local/bin/zabbix_trap_receiver.pl"

/tmp/zabbix_traps.tmp に受信した Trap が書き込まれるようにはなりましたが、
zabbix_server.log では unmatched trap received from [xxx.xxx.xxx.xxx] となってしまい、
各ホストでの監視設定に引っかかりません。

公式ドキュメントでも SNMPTT よりは Perl のほうを使うのがおすすめのようですし、
この方向で何とか解決したいです。

ご助言いただけましたら幸いです。よろしくお願いします。

コメント表示オプション

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

各ホストのSNMPインターフェースにはどのように設定されています
か?

ログに出力されたIPアドレスが、登録されているホストのSNMPイン
ターフェースのうち何れかと一致していますか?

あと、私はSNMPTTよりもPerlの方がお勧めという記述を公式サイト
上では見た記憶が無いのですが、そのような記述がある場所を覚え
ていらっしゃいましたらお教えください。

お返事ありがとうございます。

SNMPインタフェースは送信元のIPアドレスを設定しているのですが、portが161にしているのが問題でしょうか。
SNMP get での監視は行う予定はないので、162 にするのが正しいですか。

zabbix_server/snmptrapper/snmptrapper.c の process_trap(const char *addr, char *begin, char *end) にて
SNMPインタフェースの一覧にマッチしているかどうかを見ているのはわかりますが、
設定が謎めいています。

また、後段につきましては、
https://www.zabbix.com/documentation/2.2/manual/config/items/itemtypes/s...

This simple example uses SNMPTT as traphandle. For better performance on production systems, use embedded Perl to pass traps from snmptrapd to SNMPTT or directly to Zabbix.

とありますが誤読してますでしょうか。

ユーザー TNK の写真

ポート番号までは見ていなかったと思いますので、あとは、送られ
てきたトラップに対応するアイテムが登録されていないのではない
でしょうか?

トラップの内容と、トラップ受信用のアイテムの設定内容をお教え
ください。
snmptrap[]やsnmptrap.fallbackをどのように指定されていますか?

あと、引用して頂いた英文は、私も英語が得意なわけではありませ
んが、

本番環境でより処理パフォーマンスが求められるような環境である
場合、embedded Perlを利用してsnmptrapdからSNMPTTか直接Zabbix
に転送した方が良い。

ということではないでしょうか?

embedded Perlというのは、Perlインタプリタをそのまま利用する
のではなく、事前にコンパイルしてしまって、実行時のオーバーヘ
ッドを少なくする方法があるのですが、それを指しているのだと思
います。

Nagiosなどでも、プラグインの高速化や効率化の為に利用する場合
があったかと思います。
例: ePN(embedded Perl Nagios)

アイテムの設定内容です。

・名前 SNMP Trap
・タイプ Zabbixエージェント
・キー snmptrap.fallback ← 試行錯誤しています
・ホストインターフェース 172.26.xxx.xxx:10050 ← テンプレートから設定していると変えられないでしょうか
・データ型 ログ
・更新間隔(秒) 0
・例外の更新間隔 設定されていません
・ログの時間の形式 hh:mm:ss yyyy/MM/dd ← これも怪しいでしょうか

また、Trapの例としてはこのような形のものです。

16:14:49 2014/08/19 ZBXTRAP 172.26.xxx.xxx
PDU INFO:
version 1
transactionid 35
errorindex 0
notificationtype TRAP
messageid 0
community xxxxxx
receivedfrom UDP: [172.26.xxx.xxx]:61566->[0.0.0.0]:0
errorstatus 0
requestid 54956649
VARBINDS:
DISMAN-EVENT-MIB::sysUpTimeInstance type=67 value=Timeticks: (1292054) 3:35:20.54
SNMPv2-MIB::snmpTrapOID.0 type=6 value=OID: UCD-SNMP-MIB::systemStats
ccitt.1 type=4 value=STRING: "test trap"

なかなかうまく設定できず難儀しております。

embedded Perl については同じ認識です。
snmptrapd で perl do ... したときは外部のインタプリタが呼ばれているのではなく、
コンパイル時に設定されている libperl.so を使っているはずと思っています。

また明日頑張ります… いろいろとありがとうございます。

ユーザー TNK の写真

アイテムの設定の

・タイプ Zabbixエージェント

が誤っていると思われます。

「SNMPトラップ」を選択してみてください。

テンプレートではそのように設定していたのですが、各ホストに適用すると「Zabbixエージェント」に固定されてしまい
うまく設定されていなかったようです。

テンプレートを使わずに個別に「SNMPトラップ」で設定することで無事設定できました。
台数が多いものでかなり面倒ではありますが、何とかなりそうです。

ありがとうございました。

ユーザー TNK の写真

もうすでに対処されてしまったかもしれませんが、タイプがZabbix
エージェントのものとSNMPトラップのものとが混在するようなテン
プレートの紐づけに関して、手元の環境で試してみました。

確認したのは2.2.5ですが、ホストに対してSNMPのインターフェー
スを追加後にテンプレートを適用すれば、テンプレート内でSNMPト
ラップとしていれば、そのまま適用されました。
SNMPインターフェースが登録されていないホストであれば、テンプ
レートを紐づけしようとした際にエラーになります。

Zabbix 2.2.5であれば、テンプレートを利用しても正しく設定され
そうだということでご参考まで。