【zabbix2.0】snmpttによるトラップメッセージの編集 #zabbix #自宅ラック勉強会

22
Zabbix2.0SNMPTTによる トラップメッセージの編集 2013.03 @qryuu 2013/3/9 1

Upload: -

Post on 16-Apr-2017

22.968 views

Category:

Technology


2 download

TRANSCRIPT

【Zabbix2.0】 SNMPTTによる

トラップメッセージの編集 2013.03 @qryuu

2013/3/9 1

HN :九龍真乙

所属 :自宅ラック勉強会

TwitterID: @qryuu

2013/3/9 2

自己紹介

Zabbix2.0でのSNMPTrap監視

2013/3/9 3

Zabbix2.0ではSNMPTrapメッセージを SNMPTT(SNMP Trap Translator)を使って整形し、SNMPTrapperFileに出力されたメッセージをSNMPTrapperという専用プロセスによって収集します。

2013/3/9 4

Zabbix2.0でのSNMPTrap監視

SNMP-Trap監視

2013/3/9 5

Zabbix1.8

snmptrapd

サンプルスクリプト または

自作スクリプト

zabbix_sender

Zabbix_Trapper

Zabbix2.0

snmptrapd

handler SNMPTT

TrapperFile

snmp_trapper

snmptrap

2013/3/9 6

snmpttによるTrapの動き

SNMPTrap snmptrapd handler

snmptt (.conf)

+カテゴリ,重要度 snmptt.log snmp trapper

key:snmptrap[<重要度>"カテゴリ

名"]

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を集約登録する機能は無い。

2013/3/9 7

snmpttによるTrapの動き

nmptt動作例

2013/3/9 8

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

unmatched trapのロギング設定

2013/3/9 9

アイテム登録の無いIPアドレスからのSNMPTrapを受信した際に、zabbix_server.logに unmatched trap received from[IPaddress]:~~メッセージを記録するかどうかは[一般設定]-[その他のパラメータ]の設定により変わります。 [マッチしないSNMPトラップをログに記録]の チェックをはずした場合、zabbix_server.logにunmatched trap のメッセージは出力されなくなります。

SNMPTrap受信するのは、snmptrapdプロセスです。 SNMPTrapを受信したら、SNMPTTのhandlerをキックするように、snmptrapd.confを編集します。

SNMPTrapのoidに応じてメッセージに変換を行う操作はSNMPTTが行いますので、snmptrapdでは変換を行わず、oidのまま引き渡すように、snmptapdの起動スクリプトを編集します。

編集が終わったら、snmptrapdを再起動します。

2013/3/10 10

snmptrapdの設定

~~~ #vi /etc/snmp/snmptrapd.conf traphandle default /usr/local/snmptt/sbin/snmptthandler disableAuthorization yes ~~~

~~~ #vi /etc/init.d/snmptrapd 変更前 OPTIONS=“-Lsd -p /var/run/snmptrapd.pid“ 変更後 OPTIONS="-m +ALL -Lsd -On -p /var/run/snmptrapd.pid" ~~~

環境設定:

インストールディレクトリ:/usr/local/snmptt/ mib変換ファイルディレクトリ:/etc/snmp/snmptt_confs/ TrapperFileパス:/var/log/snmp/zabbix_traps.tmp logファイルパス: /var/log/snmptt/

パスは任意に変更することが可能です。

2013/3/9 11

SNMPTTのインストール

2013/03/07現在、SNMPTTの安定最新版はsnmptt_1.3となっています。

(snmptt_1.4bata2も公開されています。)

snmptt_1.3 http://sourceforge.net/projects/snmptt/files/snmptt/snmptt_1.3/snmptt_1.3.tgz/download

2013/3/9 12

SNMPTTのダウンロード

インストールディレクトリの作成 # mkdir /usr/local/snmptt # mkdir /usr/local/snmptt/sbin SNMPTTダウンロード # cd /usr/local/snmptt # wget http://sourceforge.net/projects/snmptt/files/snmptt/snmptt_1.3/snmptt_1.3.tgz/download # tar zxvf snmptt_1.3.tgz

バイナリ

snmptt :snmptt本体

snmpttconvertmib :mibファイルからsnmptt用設定ファイルを作成する コンバータ

Snmptthandler:snmptrapdからtrapメッセージを受け取り spoolファイルを生成する

設定ファイル

Snmptt.ini:snmpttの設定ファイル

2013/3/9 13

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/

/etc/snmp/snmptt.iniで変更を加えた部分についてだけ、記述します。

2013/3/10 14

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

SNMPTTのログ・spool・SNMPTrapFile生成のため、ディレクトリの作成とパーミッションの設定を行います。

2013/3/9 15

動作用ディレクトリの作成

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

SNMPTrapFileはSNMPTrapを受信する度に追記されるため、 logローテションの設定を行います。

snmptt.logrotateの中身は以下の通りです。

2013/3/9 16

Logrotate設定

Logrotateファイルの配置 # cp /usr/local/snmptt/snmptt_1.3/snmptt.logrotate /etc/logrotate.d/

/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 }

Mibファイルからsnmptt用mib変換ファイルを生成します。 この例では、net-snmp附属のIF-MIBを変換しています。

Snmpttのmib変換ファイルはmibファイルの数だけ(Trap用の情報を持たないmibは除きます。)必要になりますので、ディレクトリを分ける事をお勧めします。

2013/3/9 17

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

Mibファイルのコンバートにより以下の様なmib変換ファイルが生成されます。(上下は省略しています)

Snmpttがこのファイルをロードしている場合、Zabbixでは以下の様に表示されます。

2013/3/9 18

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 ~~~

先ほどのファイルを以下のように編集することにより、Trapメッセージを日本語化することも可能です。

Snmpttがこのファイルをロードしている場合、Zabbixでは以下の様に表示されます。

2013/3/9 19

Mib変換ファイルの編集

~~~ 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 ~~~

先ほどの様に作成したmib変換ファイルはsnmptt.iniにおいて、[TrapFiles]として定義することで読み込まれます。 [TrapFiles] の定義は、snmptt.iniファイルの最下部に記載されています。

TrapFilesの設定は絶対パスで行ってください。

Mib変換ファイルの編集を行った場合やsnmptt.iniの編集を行った場合、必ずsnmpttの再起動を行ってください。 Snmpttのデーモンが再起動されるまで、設定は反映されません。

2013/3/9 20

Mib変換ファイルの読み込み設定

~~~ [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 ~~~

Zabbix2.0ではSNMPTTのmib変換ファイルにより、トラップ毎に別々のキーワード、重要度を設定することができます。

SNMPTrapFileに記録されるキーワード・重要度が異なる場合、

Zabbix2.0では別々のアイテムとして登録することが出来るので トリガー設定では、データを受信したことだけを検知し、 詳細はアイテム値をみる事で、トリガーを簡略化することができます。

2013/3/9 21

監視設定のポイント