現在位置: ホーム / 製品・サービス / 統合システム監視 MIRACLE ZBX / MIRACLE ZBX - Zabbix テック・ラウンジ / ZabbixでSNMPTTを利用してSNMPトラップを監視する

ZabbixでSNMPTTを利用してSNMPトラップを監視する

MIRACLE ZBXやZabbixでは、SNMPTTを利用してSNMPトラップを監視することができますが、構成が複雑であり、理解しにくい部分です。今回はMIRACLE ZBXやZabbixによるSNMPトラップ監視の概要と、SNMPTTのインストールから設定、動作確認までを説明します。
※本記事は、2015年08月24日と2015年09月29日に、みらくるブログ「MIRACLE ZBX サポートTips」上にて掲載したブログ記事を基に、一部編集を加えたものです。 

Zabbix / MIRACLE ZBXによるSNMPトラップ監視の概要 

監視対象から送信されたSNMPトラップのデータが、Zabbix(あるいはMIRACLE ZBX)のDBに保存されるまで処理は大まかに以下の流れで行われます。

  1. 監視対象機器がSNMPトラップを送信する
  2. 送信されたトラップをsnmptrapd(Net-SNMP)で受信する
  3.  snmptrapdが受信したトラップのデータをSNMPTTに渡す
  4. SNMPTTがデータの書式などを整形してSNMPTrapperFileに出力する
  5. Zabbix Serverの snmp trapperプロセスが SNMPTrapperFileを読み込む
  6. snmp trapperプロセスがデータを解析してDBに保存する

 

Zabbix SNMPTT Structure

SNMPトラップの受信はNet-SNMPのsnmptrapdで行います。受け取ったデータの変換や整形はSNMPTTで行います。SNMPTTが変換や整形したデータはテキストファイル(SNMPTrapperFile)に出力され、そのファイルをZabbix Serverがログ監視と同じような方法で監視を行います。

 

環境 

本記事では下記の環境を想定しています。 

  • OS

Asianux Server 4 (Hiranya SP3)※全てのパッケージをインストールしている状態。
kernel-2.6.32-358.14.1.el6.x86_64

  • MIRACLE ZBX

zabbix-2.2.9-1.ML6.x86_64

  • snmptrapd(Net-SNMP)

net-snmp-5.5-44.AXS4.3.x86_64

  • SNMPTT

snmptt-1.4-0.9.beta2.el6.noarch

 

SNMPTTのインストール

yumを使用してSNMPTTのインストールを行います。レポジトリはEPELを使用します。
Asianux Server4 (AXS4 SP4)の環境では、事前にperl-IO-stringyパッケージを手動でインストールしてからyumを実行する必要があります。

1. perl-IO-stringyパッケージを手動でインストールする

# wget http://ftp.miraclelinux.com/pub/Asianux/Server/4/Unsupported/extra/SP4/x86_64/perl-IO-stringy-2.110-10.1.AXS4.noarch.rpm
# rpm -ivh perl-IO-stringy-2.110-10.1.AXS4.noarch.rpm

2. EPELのレポジトリを追加する

# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

3. yumでsnmppttパッケージをインストールする

# yum install snmptt

※net-snmp-perl パッケージがインストールされていない環境では、別途インストールする必要があります。

# yum install net-snmp-perl

 

snmptrapd の設定と起動

snmptrapdの設定ファイルであるsnmptrapd.confを編集します。
snmptrapd.confでは、traphandle ディレクティブで、snmptrapd が受け取ったSNMPトラップをSNMPTTのsnmptthandlerに渡すように設定を行います。OIDを指定して渡すプログラムを分けることもできます。ここでは簡易に全てのトラップをsnmptthandlerで処理するように指定しています。
authCommunityで許可するコミュニティを指定するかdisableAuthorization yesと設定することで認証を無効にします。ここでは、コミュニティ名による認証を無効にしています。

設定ファイル:/etc/snmp/snmptrapd.conf
traphandle default /usr/sbin/snmptthandler
disableAuthorization yes

次にsnmptrapdの起動オプションを変更します。
SNMPトラップのOIDをメッセージに変換する処理はSNMPTTが行います。
そのため、snmptrapdではOIDのまま処理をするようにsnmptrapdの設定ファイルを下記のように変更します。

設定ファイル:/etc/sysconfig/snmptrapd
OPTIONS="-m +ALL -Lsd -On -p /var/run/snmptrapd.pid"

設定ができたら、反映するためにsnmptrapdサービスを再起動します。

# service snmptrapd restart

※snmptrapdをOS起動時に自動的に起動する場合には下記を実行します。

# chkconfig snmptrapd on

 

snmpttの設定と起動

snmpttの動作を設定するファイルはsnmptt.iniです。Zabbixとの連携のために、各パラメータを以下のように変更します。

設定ファイル:/etc/snmp/snmptt.ini

#snmpttをスタンドアローンではなくデーモンモードで起動する
mode = daemon

#NET-SNMP のPerlモジュールを使用するための設定
net_snmp_perl_enable = 1
net_snmp_perl_best_guess = 2

#日付と時間のフォーマット
date_time_format = %Y/%m/%d %H:%M:%S

#zabbixが参照するログファイルの場所
log_file = /var/log/snmptt/snmptt.log

#処理の間隔(秒)デフォルトでは5秒
sleep = 1

#基本的なデバッグメッセージを出力する
DEBUGGING = 1
DEBUGGING_FILE = /var/log/snmptt/snmptt.debug
DEBUGGING_FILE_HANDLER = /var/log/snmptt/snmptthandler.debug

※参照
http://snmptt.sourceforge.net/docs/snmptt.shtml

SNMPTTがsnmpトラップのデータをどのように整形するかのルールを記載します。
設定ファイルはデフォルトの設定ではsnmptt.confです。

Zabbix(MIRACLE ZBX)との連携で必要となるのは、EVENTとFORMATの2行です。
書式は下記となります。

設定ファイル:/etc/snmp/snmptt.conf
EVENT event_name event_OID "category" severity
FORMAT format_string

EVENTのevent_OIDに合致したSNMPトラップに、指定したFORMATが追加されてSNMPTrapperFileに出力されます。

Zabbix(MIRACLE ZBX)との連携のため、FORMATの行でZBXTRAPというキーワード記述して、そのあとに送信元のIPアドレスを記述します。

Zabbix(MIRACLE ZBX)はこのIPアドレスに合致したホストにデータを割り当て、そのホストに設定されているsnmptrap[]アイテムの正規表現やsnmptrap.failbackに合致しているかをチェックを行い合致していればデータを格納します。

以降は下記の例を使用して説明します。

設定ファイル:/etc/snmp/snmptt.conf
EVENT linkDown .1.3.6.1.6.3.1.1.5.3 "Test pattern" Red
FORMAT ZBXTRAP $aA A linkDown trap signifies

EVENT linkUp .1.3.6.1.6.3.1.1.5.4 "Test pattern" Blue
FORMAT ZBXTRAP $aA A linkUp trap signifies

EVENT general .* "LOGONLY" Normal
FORMAT ZBXTRAP $aA received unexpected trap

 この例では、OIDが".1.3.6.1.6.3.1.1.5.3"か、".1.3.6.1.6.3.1.1.5.4"のSNMPトラップを受信した場合下記のログが記録されます。$aAは送信元のIPアドレスとして展開されます。

SNMPTrapperFile(/var/log/snmptt/snmptt.log)
2015/07/30 07:05:40 .1.3.6.1.6.3.1.1.5.3 Red "Test pattern" localhost - ZBXTRAP 127.0.0.1 A linkDown trap signifies

また、OIDが".1.3.6.1.6.3.1.1.5.3"か、".1.3.6.1.6.3.1.1.5.4"ではないOIDのSNMPトラップを受信した場合は、" .*" の設定により下記のログが記録されます。

SNMPTrapperFile(/var/log/snmptt/snmptt.log)
2015/07/30 07:22:59 .1.3.6.1.6.3.1.1.5.6 Normal "LOGONLY" 192.168.0.100 - ZBXTRAP 192.168.0.100 received unexpected trap

※snmptt.confの設定の詳細については、下記のWebページを参照してください。
http://snmptt.sourceforge.net/docs/snmptt.shtml

snmpttサービスを起動する前にSNMPTrapperFileを作成し、オーナーとグループをsnmpttに変更します。

# cd /var/log/snmptt/
# touch snmptt.log
# chown snmptt.snmptt snmptt.log

snmpttサービスを起動します。

# service snmptt start

OS起動時にsnmpttを自動でに起動する場合は下記を実行します。

# chkconfig snmptt on

 

Zabbix(MIRACLE ZBX)Server の設定

Zabbix Server の設定ファイルででSNMPトラップ監視を有効にします。

ZabbixのSNMP Trapperプロセスを起動することと、zabbix server が参照するSNMPトラップが記録されていくファイルを指定します。

/etc/zabbix/zabbix_server.conf

SNMPTrapperFile=/var/log/snmptt/snmptt.log
StartSNMPTrapper=1

※設定の変更を反映するためにはサービスの再起動が必要です。

 

Zabbix(MIRACLE ZBX)でSNMPトラップ監視するためのアイテムの登録

SNMPトラップを監視するアイテムを使用するためには、ホストにSNMPインターフェイスを追加する必要があります。

ホストにSNMPインターフェイスを追加します。

例)IPアドレス192.168.0.100のホストにSNMPインターフェイスを追加する場合

[設定]->[ホスト]->該当のホスト
SNMPインターフェイス: 192.168.0.100
ポート:161

新規グループの作成

 

ホストにアイテムを追加します。
タイプには"SNMPトラップ"データ型を"ログ"に設定します。

SNMPトラップを監視するアイテムは下記の2種類があります。

snmptrap[regexp]
snmptrap.fallback

snmptrap[regexp]では正規表現にマッチしたSNMPトラップを収集します。
snmptrap.fallbackでは、snmptrap[regexp]にはマッチしないSNMPトラップを収集します。

例)snmptrap[]を使用し、regexpに"linkDown"を設定する場合

アイテム
名前:SNMP Trap regexp
タイプ:SNMPトラップ
キー: snmptrap[linkDown]
ホストインターフェイス:192.168.0.100:161
データ型:ログ

 

アイテムの設定1


例)snmptrap[]を使用し、regexpに"linkDown"を設定する場合

アイテム
名前:SNMP Trap fallback
タイプ:SNMPトラップ
キー: snmptrap.fallback
ホストインターフェイス:192.168.0.100:161
データ型:ログ

アイテムの設定2

 

動作確認

設定したアイテムでSNMPトラップが取得できるかの動作確認を行います。

下記の条件で、LinuxサーバからSNMPトラップを送信します。

トラップ送信元サーバ: 192.168.0.100
トラップ送信先サーバ: 192.168.0.22
コミュニティ名:public
バージョン:SNMPv2c


snmptrapコマンドを使用してZabbix server にSNMPトラップを送信します。

# snmptrap -v 2c -c public 192.168.0.22  '' .1.3.6.1.6.3.1.1.5.3
# snmptrap -v 2c -c public 192.168.0.22 '' .1.3.6.1.6.3.1.1.5.4
# snmptrap -v 2c -c public 192.168.0.22 '' .1.3.6.1.6.3.1.1.5.5


SNMPTrapFile には下記のログが記録されます。

/var/log/snmptt/smmptt.log

2015/07/31 05:33:04 .1.3.6.1.6.3.1.1.5.3 Red "Test pattern" 192.168.0.100 - ZBXTRAP 192.168.0.100 A linkDown trap signifies
2015/07/31 05:34:24 .1.3.6.1.6.3.1.1.5.4 Blue "Test pattern" 192.168.0.100 - ZBXTRAP 192.168.0.100 A linkUp trap signifies
2015/07/31 05:34:26 .1.3.6.1.6.3.1.1.5.5 Normal "LOGONLY" 192.168.0.100 - ZBXTRAP 192.168.0.100 received unexpected trap


アイテムのヒストリには下記のようにデータが記録されます。

アイテムのヒストリデータ

 

SNMPTrapperFileのローテーション

最後に、SNMPTrapperFileはSNMPトラップを受信するたびに増加していきますので、下記のようにlogrotateを設定するなどの対処を行います。

/etc/logrotate.d/snmptt
/var/log/snmptt/snmptt*.log /var/log/snmptt/snmptthandler.debug {
weekly
notifempty
missingok
}

/var/log/snmptt/snmptt.debug {
weekly
notifempty
missingok
postrotate
/etc/init.d/snmptt reload >/dev/null 2>/dev/null || true
endscript
}

 

以上、簡単ですが、ZabbixやMIRACLE ZBXでSNMPTTを利用してSNMPトラップを監視する方法を解説しました。

注意事項

本ドキュメントの内容は、予告なしに変更される場合があります。
本ドキュメントは、限られた評価環境における検証結果をもとに作成しており、全ての環境での動作を保証するものではありません。
本ドキュメントの内容に基づき、導入、設定、運用を行なったことにより損害が生じた場合でも、当社はその損害についての責任を負いません。あくまでお客さまのご判断にてご使用ください。

 

MIRACLE ZBX 製品・サポートサービス 詳しくはこちら

MIRACLE ZBX Virtual Appliance V3.0 評価版のお申し込み

製品・サービスについてのお問い合わせ

お問い合わせフォームMIRACLE ZBX製品やサポートサービスについてのご相談やご質問は、「お問い合わせフォーム」よりお気軽にお問い合わせください。