Zabbix 2.4 SNMPトラップの監視設定メモ(SNMPTT)

Zabbix
Zabbix
スポンサーリンク

SNMPトラップを受信して Zabbix から監視をするための設定メモです。Zabbix の公式マニュアルでも推奨している SNMPTT(snmptthandler-embedded)を使って設定してみました。トラップを受信する snmptrapd 、トラップの書式を整える SNMPTT など登場人物が多いため設定がやや複雑ではありますが、できるだけ分かりやすくを心がけてまとめてみました。

サーバ構成

Zabbixサーバのバージョンは 2.4 、SNMPエージェントは CentOS6.6 です。IPアドレスはご自分の環境に読み替えてください。
ZabbixサーバとSNMPエージェントの構成

Zabbix 2.4 SNMPトラップ受信の流れ

上のスライドは、かなりはしょった説明です(^^;) 詳細は公式マニュアル SNMPトラップ | Zabbix Documentation 2.2 をご参照ください。

iptables の設定

SNMPトラップはUDP162番ポートで受信します。iptables などでパケットフィルタリングをしている場合は、ポートを開けておきましょう。

vi /etc/sysconfig/iptables

---(下記を追加)---------------------------
-A INPUT -p udp --dport 162 -j ACCEPT
 

・iptablesを再起動します
service iptables restart

インストール

NET-SNMP のインストール

yum -y install net-snmp net-snmp-perl

SNMPTT のインストール

・EPELリポジトリの追加(SNMPTTのインストールに必用です)

rpm -ivh  
rpm --import http://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-6
 

・SNMPTTのインストール(1.4-0.9.beta2)※バージョンは2015年3月11日時点のものです。
yum -y install snmptt

・EPELリポジトリの無効化
vi /etc/yum.repos.d/epel.repo
---(下記を変更)---------------------------
[epel]
name=Extra Packages for Enterprise Linux 6 – $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1

enabled=0
------------------------------

snmptrapd の設定

vi /etc/snmp/snmptrapd.conf

---(下記を追加)--------------------------- 
authCommunity   log,execute,net s79bjf1q 
perl do "/usr/share/snmptt/snmptthandler-embedded";
 

authCommunity の「s79bjf1q」がSNMPのコミュニティ名です。コミュニティ名はSNMPのパスワードに該当するものですので、 ある程度複雑なものを設定することをオススメします。

・起動
service snmptrapd start

・自動起動設定
chkconfig snmptrapd on

SNMPTT の設定

日時の書式をZabbix用に設定します。また SNMPTT の syslog 出力はOFFにしておきます。(syslog には snmptrapd が出力します)

vi /etc/snmp/snmptt.ini

---(下記を変更)--------------------------- 
#date_time_format = 
 ↓ 
date_time_format = %H:%M:%S %Y/%m/%d 

syslog_enable = 1 
 ↓ 
syslog_enable = 0
 

・オリジナルのトラップ書式をバックアップします。
mv -i /etc/snmp/snmptt.conf /etc/snmp/snmptt.conf.org

・トラップの書式をZabbix用に設定します。
vi /etc/snmp/snmptt.conf

---(下記を追加)--------------------------- 
# 
# Zabbixテスト用
# 
EVENT general .* "General event" Normal 
FORMAT ZBXTRAP $aA $ar $1
 

・起動
service snmptt start

・自動起動設定
chkconfig snmptt on

snmptrapd 起動オプションの変更

SNMPTTのドキュメントによると、snmptrapd 起動オプションを -On に変更することが推奨されています。 これは UCD-SNMP / NET-SNMPのバージョンによっては、MIBのオブジェクトIDとシンボル名が正しく変換されない場合があるためのようです。

vi /etc/rc.d/init.d/snmptrapd

---(下記を変更)--------------------------- 
OPTIONS="-Lsd -p /var/run/snmptrapd.pid" 
 ↓ 
OPTIONS="-On -Lsd -p /var/run/snmptrapd.pid"
 

「-Lsd」は syslog(-Ls) に LOG_DAEMON(-d)ファシリィティで出力するためのオプションです。

・snmptrapd を再起動
service snmptrapd restart

動作確認

以上で snmptrapd と SNMPTT の設定が完了しました。Zabbix の設定をする前に SNMPトラップを受信して、正しくトラップファイルに書き込まれていることを確認します。

SNMPエージェント側

SNMPトラップを送信するため、SNMPエージェントとなるサーバに snmptrap コマンドをインストールします。
yum -y install net-snmp-utils

SNMPトラップを送信します。(root権限で実行してください)

sudo snmptrap -v 2c -c s79bjf1q 172.16.1.10 '' .1.3.6.1.4.1.8072.9999 .1.3.6.1.4.1.8072.9999 s 'TEST'
 

・snmptrapコマンドの書式
snmptrap -v <SNMPバージョン> -c <コミュニティ名> <ZabbixサーバのIPアドレス> '' <OID> <OID> s '<値>' 

Zabbixサーバ側

Zabbixサーバの snmptrapd がトラップを正常に受信しているかを確認します。
tail -f /var/log/messages

Mar 11 05:39:21 zabbix snmptrapd[27606]: 2015-03-11 05:39:21 example.com [UDP: [172.16.1.20]:47705->[172.16.1.10]]:#012.1.3.6.1.2.1.1.3.0 = Timeticks: (21334325) 2 days, 11:15:43.25#011.1.3.6.1.6.3.1.1.4.1.0 = OID: .1.3.6.1.4.1.8072.9999#011.1.3.6.1.4.1.8072.9999 = STRING: "TEST"
 

SNMPTT がトラップの書式を整えてトラップファイル(SNMPTTのログファイル)へ書込んでいるか確認します。
tail -f /var/log/snmptt/snmptt.log

05:40:32 2015/03/11 .1.3.6.1.4.1.8072.9999 Normal "General event" 172.16.1.20 - ZBXTRAP 172.16.1.20 172.16.1.20 TEST
 

上記のようなログが出力されていればOKです。

Zabbixサーバの設定

SNMPトラッパーを有効にします。

vi /etc/zabbix/zabbix_server.conf

---(下記を変更)--------------------------- 
# StartSNMPTrapper=0 
 ↓ 
StartSNMPTrapper=1 

トラップファイルへのパスの設定が、下記になっていることを確認(もし違ったら変更してください)

SNMPTrapperFile=/var/log/snmptt/snmptt.log 

Zabbix3.0では「/var/log/snmptrap/snmptrap.log」になっているので注意です。

・再起動
service zabbix-server restart

SNMPトラップ監視テンプレートの作成

[設定]→[テンプレート]→[テンプレートの作成]をクリックします。
Zabbix管理画面「テンプレートの作成」

[テンプレート]タブを選択 下記を入力し「追加」をクリックすればテンプレートが作成されます。
テンプレート名:A_Template_SNMP_Trap  グループ:A_Templates グループを作成する
テンプレート名の入力とグループの選択


テンプレートの作成完了

SNMPトラップ監視アイテムの作成

[設定]→[テンプレート] 「A_Template_SNMP_Trap」行の「アイテム」をクリックします。
作成したテンプレートのアイテムをクリック

「アイテムの作成」をクリックします。
アイテムの作成をクリック

下記を入力/選択し「追加」をクリックすれば SNMPトラップ監視アイテムの作成完成です。
アイテムの設定画面

---(設定箇所)---------------------------
名前:SNMPトラップ(テスト用)
タイプ:SNMPトラップ
キー:snmptrap["General"]
データ型:文字列
アプリケーションの作成:snmp
------------------------------
※キー snmptrap の引数は必ずダブルクオート「"」で括ってください。シングルクオート「'」で括ると正しく動作しません。

ホストの設定

[設定]→[ホスト] SNMPエージェントのホストをクリックします。
SNMPエージェントのホストをクリック

「ホスト」タブを選択して、SNMPインターフェースの「追加」をクリック、IPアドレスを入力します。
ホストのSNMPインターフェースを設定

[テンプレート]タブを選択し、[選択]をクリックします。
テンプレートタブ画面 [選択]をクリック

作成したトラップ監視テンプレートにチェックを入れて[選択]をクリックします。
作成したトラップ監視テンプレートをチェック

[追加]をクリックします。
テンプレートタブ画面 [追加]をクリック

「テンプレートとのリンク」にトラップ監視テンプレートが表示されていることを確認し「更新」ボタンをクリックすればホストの設定完了です。
テンプレートタブ画面 確認し「更新」ボタンをクリック

動作確認

SNMPエージェントからSNMPトラップを送信します。

[監視データ]→[概要] タイプをデータにして「SNMPトラップ(テスト用)」の値をクリック→「最新の値」を選択します。
「最新の値」を選択

トラップの内容がZabbixに記録されていることが確認できます。
Zabbixに記録されたトラップの内容

終わりに

SNMP はネットワーク監視プロトコルとして広く普及していますので、ほとんどのルータやスイッチ、複合機などが SNMP に対応しています。これらの Zabbixエージェントがインストールできない機器でも SNMP を使えば Zabbix で監視することが出来るので便利ですね。

コメント

  1. とおりすがり より:

    “zabbixサーバの設定”にトラップファイルパスの指定がないのでは?
    デフォルトだと/tmp/zabbix_traps.tmpを見に行くようなのでsnmpttが書き込むファイルパスに合わせる必要があるかと

    • >とおりすがりさん

      コメントありがとうございます。

      Zabbix2.4をyum(RPM)からインストールすると、初めから設定ファイルに
      「SNMPTrapperFile=/var/log/snmptt/snmptt.log」の記述があるため省略していましたが
      念のため、手順に追加させて頂きました。

      Zabbix3.0では「SNMPTrapperFile=/var/log/snmptrap/snmptrap.log」に変わっているようですね。

タイトルとURLをコピーしました