SNMPトラップの受信は、SNMP対応デバイスに対してクエリーを発行することと反対の機能です。
この場合、情報はSNMP対応デバイスから送信され、Zabbixで収集または「トラップ」されます。
トラップは通常、ある条件の変化が起こったときに送信され、(クエリーに使用されるエージェントサイドのポート161とは対照的に)エージェントがポート162でサーバへ接続します。トラップを使用すれば、クエリーの間に発生しクエリーデータでは見落とされることがある短期間の障害を検出できます。
ZabbixでのSNMPトラップの受信は設計上、snmptrapdと、トラップをZabbixへ渡すために組み込まれたメカニズムの1つです。- perlスクリプトまたはSNMPTTのどれかです。
トラップ受信の流れ:
Webインターフェース中の以下のフィールドの設定は、このアイテムタイプに固有のものです:
[設定]→[ホスト]のホストインターフェースフィールドで、SNMP インターフェースを正しいIPアドレスまたはDNSアドレスを設定してください。受信した各トラップのアドレスは、対応するホストを探すため、すべてのSNMP インターフェースのIPアドレスおよびDNSアドレスと比較されます。
キーのフィールドにおいて、SNMPトラップキーの1つを使用します:
キー | ||
---|---|---|
説明 戻 | 値 コメント | |
snmptrap[regex] | ||
regexに一致する該当アドレスからのすべてのSNMPトラップをキャッチします。 SNMPトラップ このアイテムは、SNMPインターフェー | にのみ設定できます。 |
<このアイテムは、Zabbix 2.0.0以降でサポートされています。 注: Zabbix 2.0.5以降、このアイテムキーのパラメータ中で、ユーザーマクロおよびグローバル正規表現がサポートされています。 |
snmptrap.fallback | ||
そのインターフェースに対してどのsnmptrap[]アイテムでもキャッチされなかった該当アドレスからすべてのSNMPトラップをキャッチします。 SNMPトラップ このアイテムは、SNMPインターフェースにのみ設定できます。 |
<このアイテムは、Zabbix 2.0.0以降でサポートされています。 |
この時点で、複数行にわたる正規表現の一致はサポートされていません。
構文解析されるタイムスタンプのデータ型を「ログ」に設定します。「数値」などの他の書式も許可されますが、カスタムのトラップハンドラを必要とする場合があるので注意してください。
SMMPトラップ監視が動作するためには、まず最初に正しくセットアップされていなければなりません。
トラップを読み込むためには、Zabbix サーバまたはプロキシがSNMPトラッパーのプロセスを開始するように設定されており、SNMPTTまたはPerlトラップレシーバによって書き込まれるトラップファイルを指していなければなりません。その設定を行うためには、設定ファイル(zabbix_server.conf またはzabbix_proxy.conf)を編集します:
最初に、snmptrapdがSNMPTTを使用するために設定する必要があります。
最高のパフォーマンスのためには、トラップを渡すsnmptthandler-embeddedを使用するデーモンとしてSNMPTTが設定される必要があります。SNMPTTのホームページで設定の説明書を参照してください: http://snmptt.sourceforge.net/docs/snmptt.shtml
SNMPTTがトラップを受信するよう設定されたら、トラップを記録する設定をします:
これで、Zabbixが認識するように、トラップをフォーマットします。(snmptt.confを編集する):
不明なトラップを使用しないでください - Zabbixはそれらを認識できません。不明なトラップは、snmptt.conf中で general イベントを定義することで扱うことができるようになります: EVENT general .* “General event” Normal
要件:Perl, --enable-embedded-perlでコンパイルされたNet-SNMP (Net-SNMP 5.4以降は、デフォルトで実行されています。)
Perl トラップレシーバ(misc/snmptrap/zabbix_trap_receiver.pl を探してください)は、snmptrapd からZabbix サーバへトラップを直接渡すために使用されます。これを設定するには:
スクリプト名が引用符で囲まれていない場合、以下のメッセージと同じようなメッセージを出力し起動しません。
Regexp modifiers "/l" and "/a" are mutually exclusive at (eval 2) line 1, at end of line
Regexp modifier "/l" may not appear twice at (eval 2) line 1, at end of line
すべてのカスタマイズされたperlトラップレシーバとSNMPTTトラップ設定は、次の方法でトラップをフォーマットしなければなりません:
[timestamp] [the trap, part 1] ZBXTRAP [address] [the trap, part 2]
処理中のメッセージから「ZBXTRAP」と「[address]」が削除されるので注意してください。トラップが他の方法でフォーマットされている場合は、Zabbixがそのトラップを期待通りには構文解析しない場合があります。
トラップの例:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal “Status Events” localhost - ZBXTRAP 192.168.1.1 Link down on interface 2. Admin state: 1. Operational state: 2
これは、次のようなIP=192.168.1.1のSNMPインターフェースのトラップになります:
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normal “Status Events” localhost - Link down on interface 2. Admin state: 1.
Zabbixは、いかなるログローテションシステムも提供していません- ユーザーがそれを行う必要があります。ログローテーションは、最初に古いファイルの名前を変更し、トラップが1つも失われないように後からファイルを削除します:
Zabbixにおいて、トラップファイルの実装のために、ファイルを識別するiノードをサポートするファイルシステムが必要です(情報はstat() のコールで統合されます)。
この例では、Zabbix サーバへトラップを渡すのにsnmptrapd と SNMPTTを使用します。以下のようにセットアップします:
この結果は、以下のようになります:
このシンプルな例では、トラップハンドルとしてSNMPTTを使用しています。本番システムのパフォーマンスを向上するには、埋め込みのPerlを使用し、snmptrapd から SNMPTTへまたは直接Zabbixへトラップを渡すようにしてください。
*[[https://www.zabbix.org/wiki/Start_with_SNMP_traps_in_Zabbix|CentOS based SNMP trap tutorial on zabbix.org]]
本ページは2014/08/05時点の原文を基にしておりますので、内容は必ずしも最新のものとは限りません。
最新の情報は、英語版のZabbix2.2マニュアルを参照してください。