Contenu connexe Similaire à 【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会 Similaire à 【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会 (20) 【Zabbix2.0】snmpttによるトラップメッセージの編集 #Zabbix #自宅ラック勉強会1. 【Zabbix2.0】
SNMPTTによる
トラップメッセージの編集
2013.03 @qryuu
1 2013/3/9
2. 自己紹介
HN :九龍真乙
所属 :自宅ラック勉強会
TwitterID: @qryuu
2 2013/3/9
5. SNMP-Trap監視
Zabbix1.8 Zabbix2.0
snmptrapd snmptrapd
サンプルスクリプト handler
または SNMPTT
自作スクリプト TrapperFile
zabbix_sender snmp_trapper
Zabbix_Trapper snmptrap
5 2013/3/9
6. snmpttによるTrapの動き
SNMPTrap snmptrapd handler
snmptt
snmp trapper snmptt.log (.conf)
+カテゴリ,重要度
key:snmptrap[<
重要度>"カテゴリ
名"]
6 2013/3/9
7. snmpttによるTrapの動き
1. snmptrapdがsnmpTrapを受信
2. snmptrapdがsnmpttのhandlerをキック
3. Handlerがspoolファイルを生成
4. Snmpttはiniファイルで指定されたsleep秒数毎にspoolファイルを読み込み
5. Snmpttはmib変換ファイルに従い、書式整形、カテゴリ名、重要度情報を付加し、ファイルに出
力
6. Zabbixのsnmp trapperが5.のファイルを読み込む
7. log内の“ZBXTRAP” 文字列の後ろの文字列をIPアドレスと解釈し、当該IPアドレスと一致する
SNMPインターフェイスを持つホストの
タイプ:snmpトラップ
キー:snmptrap[<重要度> “カテゴリ名”]
に対してメッセージを登録する。
8. 重要度、カテゴリ名が一致しない場合
タイプ:snmpトラップ
キー:snmptrap.fallbak
に対してメッセージを登録する。
9. IPアドレスが一致しない場合、アイテムには登録せずzabbix_server.log(zabbix_proxy.log)に
unmatched trap received from[IPaddress]:メッセージ
というログが記録される。
※IPアドレスが登録されていないホストからのTrapを集約登録する機能は無い。
7 2013/3/9
8. nmptt動作例
SNMPtrap(テストコマンド)
snmptrap -v 1 -c public localhost .1.3.6.1.2.1.11 192.168.100.201 ''.1.3.6.1.2.1.2.2.1.1.1 i 2
/var/log/snmp/zabbix_traps.tmp (デフォルトファイルパス)
2013/03/08 00:46:36 .1.3.6.1.6.3.1.1.5.3 Normal "Status Events" 192.168.100.201 - ZBXTRAP
192.168.100.201 ポートNo.2 でlinkDownトラップを検知しました。
ホスト設定
SNMPエージェント 192.168.100.201
タイプ:snmp_trapper
キー:snmptrap[Normal "Status Events“]
ログの時間形式:yyyy/MM/dd hh:mm:ss
8 2013/3/9
10. snmptrapdの設定
SNMPTrap受信するのは、snmptrapdプロセスです。
SNMPTrapを受信したら、SNMPTTのhandlerをキックするように、
snmptrapd.confを編集します。
~~~
#vi /etc/snmp/snmptrapd.conf
traphandle default /usr/local/snmptt/sbin/snmptthandler
disableAuthorization yes
~~~
SNMPTrapのoidに応じてメッセージに変換を行う操作はSNMPTTが行いま
すので、snmptrapdでは変換を行わず、oidのまま引き渡すように、
snmptapdの起動スクリプトを編集します。
~~~
#vi /etc/init.d/snmptrapd
変更前
OPTIONS=“-Lsd -p /var/run/snmptrapd.pid“
変更後
OPTIONS="-m +ALL -Lsd -On -p /var/run/snmptrapd.pid"
~~~
編集が終わったら、snmptrapdを再起動します。
10 2013/3/10
13. Snmpttの構成
バイナリ
snmptt :snmptt本体
snmpttconvertmib :mibファイルからsnmptt用設定ファイルを作成する
コンバータ
Snmptthandler:snmptrapdからtrapメッセージを受け取り
spoolファイルを生成する
設定ファイル
Snmptt.ini:snmpttの設定ファイル
実行ファイル配置
# cd snmptt_1.3
# cp snmptt snmptthandler snmpttconvertmib /usr/local/snmptt/sbin/
# cd /usr/local/snmptt/sbin/
# chmod 755 snmptt snmpttconvertmib snmptthandler
設定ファイルの配置
# cp /usr/local/snmptt/snmptt_1.3/snmptt.ini /etc/snmp/
13 2013/3/9
14. Snmptt.iniファイルの編集
/etc/snmp/snmptt.iniで変更を加えた部分についてだけ、記述します。
mode = daemon #動作モードをdaemonに変更
net_snmp_perl_enable = 1
net_snmp_perl_best_guess = 2
date_time_format = %Y/%m/%d %H:%M:%S #logの日時フォーマットです。アイテムの設定と合わせます。
(書式は異なるので注意)
sleep = 1 #スリープ時間です、この秒数毎にspoolファイルを読み込みます。
デフォルトでは5秒毎です、1秒に変更します。
log_file = /var/log/snmp/zabbix_traps.tmp #Zabbix_server.confのデフォルトSNMPTrapFileパスに
合わせています。
log_system_enable = 1
unknown_trap_log_enable = 1
DEBUGGING_FILE = /var/log/snmptt/snmp.debug
DEBUGGING_FILE_HANDLER = /var/log/snmptt/snmpttthandler.debug
14 2013/3/10
15. 動作用ディレクトリの作成
SNMPTTのログ・spool・SNMPTrapFile生成のため、ディレクトリの作成と
パーミッションの設定を行います。
Snmpttユーザの作成
# useradd -s /sbin/nologin snmptt
Spoolディレクトリの作成
# mkdir /var/spool/snmptt
# chown snmptt.snmptt /var/spool/snmptt/
起動スクリプトの配置
# cp /usr/local/snmptt/snmptt_1.3/snmptt-init.d /etc/init.d/snmptt
# chkconfig --add snmptt
# chkconfig snmptt on
ログファイル用ディレクトリの作成
# mkdir /var/log/snmptt
# chown snmptt.snmptt /var/log/snmptt
SNMPTrapFile用に/var/log/snmp/ディレクトリのパーミッション変更
#chgrp shmptt /var/log/snmp
初期ファイルの作成
# touch /var/log/snmp/zabbix_traps.tmp
#chown snmptt /var/log/snmp/zabbix_traps.tmp 15 2013/3/9
16. Logrotate設定
SNMPTrapFileはSNMPTrapを受信する度に追記されるため、
logローテションの設定を行います。
Logrotateファイルの配置
# cp /usr/local/snmptt/snmptt_1.3/snmptt.logrotate /etc/logrotate.d/
snmptt.logrotateの中身は以下の通りです。
/var/log/snmptt/snmptt*.log /var/log/snmptt/snmptthandler.debug /var/log/snmp/zabbix_traps.tmp {
weekly
notifempty
missingok
create 0644 snmptt
rotate 1
}
/var/log/snmptt/snmptt.debug {
weekly
notifempty
missingok
create 0644 snmptt
postrotate
/etc/init.d/snmptt reload >/dev/null 2>/dev/null || true
endscript
16 2013/3/9
}
17. Mibファイルのコンバート
Mibファイルからsnmptt用mib変換ファイルを生成します。
この例では、net-snmp附属のIF-MIBを変換しています。
MIBファイルの変換
# cd /usr/local/snmptt/sbin
# ./snmpttconvertmib --in=/usr/share/snmp/mibs/IF-MIB.txt --out=/etc/snmp/IF-MIB.conf.org --net_snmp_perl
Zabbix用の識別コード挿入
# cd /etc/snmp/
#sed -e "s/^FORMAT¥s/FORMAT ZBXTRAP ¥$aA /g" IF-MIB.conf.org > IF-MIB.conf
Snmpttのmib変換ファイルはmibファイルの数だけ(Trap用の情報を持た
ないmibは除きます。)必要になりますので、ディレクトリを分ける事をお勧
めします。
17 2013/3/9
18. Mib変換ファイルの編集
Mibファイルのコンバートにより以下の様なmib変換ファイルが生成されま
す。(上下は省略しています)
~~~
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal
FORMAT ZBXTRAP $aA A linkDown trap signifies that the SNMP entity, acting in $*
SDESC
~~~
EVENT linkUp .1.3.6.1.6.3.1.1.5.4 "Status Events" Normal
FORMAT ZBXTRAP $aA A linkUp trap signifies that the SNMP entity, acting in an $*
SDESC
~~~
Snmpttがこのファイルをロードしている場合、Zabbixでは以下の様に表示
されます。
18 2013/3/9
19. Mib変換ファイルの編集
先ほどのファイルを以下のように編集することにより、Trapメッセージを日本
語化することも可能です。
~~~
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Status Events" Normal
FORMAT ZBXTRAP $aA ポートNo.$* でlinkDownトラップを検知しました。
SDESC
~~~
EVENT linkUp .1.3.6.1.6.3.1.1.5.4 "Status Events" Normal
FORMAT ZBXTRAP $aA ポートNo.$* でlinkUpトラップを検知しました。
SDESC
~~~
Snmpttがこのファイルをロードしている場合、Zabbixでは以下の様に表示
されます。
19 2013/3/9
20. Mib変換ファイルの読み込み設定
先ほどの様に作成したmib変換ファイルはsnmptt.iniにおいて、[TrapFiles]
として定義することで読み込まれます。
[TrapFiles] の定義は、snmptt.iniファイルの最下部に記載されています。
TrapFilesの設定は絶対パスで行ってください。
~~~
[TrapFiles]
# A list of snmptt.conf files (this is NOT the snmptrapd.conf file). The COMPLETE path
# and filename. Ex: '/etc/snmp/snmptt.conf'
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
/etc/snmp/snmptt_confs/IF-MIB.conf.jp
~~~
Mib変換ファイルの編集を行った場合やsnmptt.iniの編集を行った場合、
必ずsnmpttの再起動を行ってください。
Snmpttのデーモンが再起動されるまで、設定は反映されません。
20 2013/3/9