(環境はZabbix 1.8.5)
1.ZABBIXサーバ設定(template,item,trigger,host)
ZABBIX Web Interface
Configuration->Templates->Create Template

Templateができたら、できたTemplateの
Items->Create Items。あんまり編集するところは無い

Description: 適当に分かりやすいものを
Type: Zabbix trapper
Key: snmptraps。zabbix_senderで送りつけるときに送信側でも同じ値を使わないと拒否される。
Type of Information: Text
Keep history: 90
Status: Active
Itemができたら、できたItemのTrigger作成

適当にTestというメッセージが入っていた場合に反応するように設定してみた。
これでTemplateの設定は完了。
最後にConfiguration->Hostsでsnmptrap受信用のホストを作成する

Name: snmptraps。ここはzabbix_senderで指定する送信元ホスト名と一緒にしないと拒否される
2.zabbix_sender受信テスト
zabbix_senderを利用して設定がうまく働いてくれるかを確認する
/usr/sbin/zabbix_sender --help # --helpで大体の使い方は分かる
/usr/sbin/zabbix_sender -vv -z 127.0.0.1 -s snmptraps -k snmptraps -o "Test"
-z zabbix_serverアドレス。同じサーバから試したのでlocalhost
-vv verbose mode。-vもあるけど、-vvで更に細かく表示
-s ホスト名。ipアドレスとかではなく、zabbixのconfiguration->HostのNameで登録してあるホスト名
-k key。Itemで設定したKeyを入れる
-o 中身の内容
成功すると、Latest data,triggerで受信した内容を確認できる。
#失敗例
-sに設定したNameではなく、IPアドレスを入れていた場合等。Failed 1とカウントされている。
/usr/sbin/zabbix_sender -vv -z 127.0.0.1 -s 192.168.0.60 -k snmptraps -o "Test"
zabbix_sender [2898]: DEBUG: Answer [{
"response":"success",
"info":"Processed 0 Failed 1 Total 1 Seconds spent 0.000716"}]
Info from server: "Processed 0 Failed 1 Total 1 Seconds spent 0.000716"
sent: 1; skipped: 0; total: 1
#成功例
-sの内容を適切なものに変更。Processed 1とカウントされている。
/usr/sbin/zabbix_sender -vv -z 127.0.0.1 -s snmptraps -k snmptraps -o "Test"
zabbix_sender [2903]: DEBUG: Answer [{
"response":"success",
"info":"Processed 1 Failed 0 Total 1 Seconds spent 0.001742"}]
Info from server: "Processed 1 Failed 0 Total 1 Seconds spent 0.001742"
sent: 1; skipped: 0; total: 1
3.ZABBIXサーバ設定(snmptrapd,snmptrap.sh)
snmptrapd自体のインストールは割愛。aptやyumからnet-snmp関連のパッケージをインストールすれば良い
#当初忘れていたが、snmptrapd自体はインストールした段階では自動起動する設定はないのでzabbixと連携させて使いたい場合は
OS起動時に一緒に起動する設定を入れる必要がある
インストール後、/etc/snmp/snmptrapd.confを編集する(無ければ作成する)
#例 trapを受診した場合traphandleでsnmptrap.shを起動するように設定するだけ
authCommunity log,execute,net public #受信するコミュニティ名と許可する動作の設定
traphandle default /bin/bash /etc/snmp/snmptrap.sh #動作させるスクリプトの設定
設定後、snmptrapdを起動若しくは再起動する。
ダウンロードしたzabbixのsource fileの
zabbix-1.8.5/misc/snmptrap/snmptrap.shを任意の場所にコピーする(この例の場合、/etc/snmp/snmptrap.sh)
コピー後、以下の場所を修正する
ZABBIX_SERVER= zabbixサーバのホスト名/IPアドレスを指定
ZABBIX_PORT= サーバのポート。特に変えていない場合ははそのまま10051
ZABBIX_SENDER= zabbix_senderの場所。インストール環境によって場所が変わるので要チェック
KEY= Configuration->Itemsで設定したKeyを入れる。この例の場合は「snmptraps」
HOST= COnfiguration->Hostsで設定したNameを入れる。この例の場合は「snmptraps」
上記設定をsnmptrap.shから抜き出すとこんな感じになる(例の環境の場合)
# CONFIGURATION
ZABBIX_SERVER="127.0.0.1";
ZABBIX_PORT="10051";
ZABBIX_SENDER="/usr/sbin/zabbix_sender";
KEY="snmptraps";
HOST="snmptraps";
4.snmptrapコマンドを用いた動作確認
snmptrapコマンド使ってsnmptrapを送ってみる。下は192.168.0.60のサーバへ送る例
(snmptrap -v 1 -c public 192.168.0.60 .1.3.6.1.4.1.8072.99999 localhost .1.3.6.1.4.1.8072.99999.1 s "Test Message")
うまくいくとMonitoring->Latest dataに取得したトラップが表示される。これで動作確認完了。
#うまく動作していない場合
・snmptrapdの受信の確認
デフォルトの設定だと/var/log/messagesにトラップ受信ログが残るので、それが出ているかを見てみる。
・snmptrap.shの動作の確認
各設定ファイルを下記内容の様に設定し、動きを見てみる。
snmptrapd.conf : traphandle default /bin/bash /etc/snmp/snmptrap.sh >> /var/log/snmptrap_tmp.log
snmptrap.sh : $ZABBIX_SENDER -z $ZABBIX_SERVER -p $ZABBIX_PORT -s $HOST -k $KEY -o "$str"
->$ZABBIX_SENDER -vv -z $ZABBIX_SERVER -p $ZABBIX_PORT -s $HOST -k $KEY -o "$str"