ja:documentation:pandorafms:monitoring:08_snmp_traps_monitoring

SNMP トラップ監視

スイッチ、ルータ、サーバ、プリンタ、AP など、SNMP をサポートするネットワークデバイスは、インターフェイスの障害、CPU またはネットワークの負荷が高すぎたり、UPS の状態が変化したり、ディスクの障害が発生したときなどに、アラーム(SNMP トラップ)を送信することができます。各デバイスには、可能なイベントの独自のコレクションがあり、これは MIB と呼ばれます。この場合、デバイスのポーリングに使用する MIB とは異なります。

トラップは、デバイスにて何かが発生した場合に非同期で送信されます。Pandora FMS には、モニタリング対象から送られてくるトラップを表示するトラップ受信コンソールがあり、また、トラップに対してアラートを設定することができます。SNMP トラップは、Pandora FMS の起動時に起動される、OS の SNMP サーバデーモンで受け取ります。このサーバは通常ログファイルを以下に保存します。

/var/log/pandora /pandora_snmptrap.log

トラップは、常に生データで受信されます。つまり、数値 OID で受信します。ただし、OS に MIB ファイルがインストールされている場合は、文字に変換することができます。エンタープライズ版の Pandora FMS の SNMP コンソールでは、トラップをより認識しやすいように、OID を数値や文字で表したり、何らかの説明をつけたりする (“インターフェースダウン” など) ためのルールを設定できます。このようなルールを自動的に定義するために、Pandora FMS はトラップのベンダ MIB を読み込むことができます。ビデオチュートリアル "Loading MIBs in Pandora FMS" もご覧ください。

最初に、SNMP コンソールを有効化するためには /etc/pandora/pandora_server.conf 内の以下のパラメータを編集する必要があります。

snmpconsole 1

トラップを文字列変換したい場合(変数のバインディングまたは Enterprise 文字列のいずれか)は、次のオプションも有効化します(Enterpriase 版のみ)。

 translate_variable_bindings 1
 translate_enterprise_strings 1

また、/etc/snmp/snmptrapd.conf ファイルを必要なパラメータで設定する必要があります。 例:

 authCommunity log public
 disableAuthorization yes

この設定では、コミュニティ “public”、認証無しでトラップを受け付けます。

SNMPv3 トラップは、送信ユーザが createUser ディレクティブを用いて /etc/snmp/snmptrapd.conf に追加されていないと受信を拒否します。例を以下に示します。

 disableAuthorization yes
 createUser -e 0x0102030405 snmpv3user SHA mypassword AES

engineID は、-e オプションと共に指定する必要があります。そうしないと、SNMPv3 INFORM のみを受信します。

OperationMonitoringSNMPSNMP Console. Using the magnifying glass icon in the first column you can display all the SNMP trap information, other important columns:

操作(Operation)モニタリング(Monitoring)SNMPSNMP コンソール(SNMP Console)。 最初の列の虫眼鏡アイコンを使用すると、すべての SNMP トラップ情報やその他の重要な列を表示できます。

  • Status: Green square if the trap has been validated and red if it has not been validated.
  • SNMP Agent: Agent that sent the trap.
  • Enterprise string: OID or Object Identifier of the sent trap. A trap can only send one piece of data in this field.
  • Time Stamp: Time that has passed since the trap was received.
  • 状態(Status) :承諾されたトラップは緑の四角で、そうでないものが赤の四角です。
  • SNMPエージェント(SNMP Agent): トラップを送信したエージェントです。
  • Enterprise 文字列(Enterprise string): 送信されたトラップの OID またはオブジェクト識別子。 トラップは、このフィールドで 1 つのデータのみを送信できます。
  • タイムスタンプ(Time Stamp): トラップを受信した時間です。

Colors

Additionally, SNMP traps have a color (seen as a background color) indicative of their corresponding type:

さらに、SNMP トラップには、対応するタイプを示す色 (背景色として表示) があります。

  • Blue: Maintenance type.
  • Purple: Information type.
  • Green: normal type.
  • Yellow: warning type.
  • Red: critical type.
  • 青: メンテナンスタイプ
  • 紫: 情報タイプ
  • 緑: 正常タイプ
  • 黄: 警告タイプ
  • 赤: 障害タイプ

In order to effectively manage the traps, it is possible to validate them so that the administrator can discriminate between the traps that have been seen and those that are yet to be seen. To validate a trap, click on the circle on the left or mark them and press the Validate button.

トラップを効果的に管理するために、管理者にすでに確認されたトラップとまだ確認されていないトラップを区別できるようにトラップを承諾することができます。 トラップを承諾するには、左側の円をクリックするか、マークを付けて 承諾(Validate) ボタンを押します。

It is possible to delete traps once they have been processed, either individually or by multiple selection and Delete action.

トラップは、処理後に個別に、または複数選択して 削除(Delete) アクションによって削除できます。

To avoid accumulation, there is a configuration option that automatically deletes elapsed SNMP traps (by default more than 10 days old).

蓄積を避けるために、経過した SNMP トラップを自動的に削除する設定オプションがあります。 (デフォルトでは 10 日以上経過したもの)

Pandora FMS also has an alert system for the SNMP traps it receives. They are based mainly on filtering rules, searching for matches in all possible fields according to rules that you configure to trigger the alert.

Pandora FMS には、受信する SNMP トラップのアラートシステムもあります。 それらは主にフィルタリングルールに基づいており、アラートを発報するように設定したルールに従って、すべてのフィールドで条件に一致するものを検索します。

SNMP トラップアラートには、コンソールで受信した SNMP トラップがアラート条件にマッチするかを検索するために使用されるいくつかのフィールドがあります。 オプションで、必要に応じて、より一般的なルールやより具体的なルールを作成するフィールドを使用することができます。

説明(Description)

アラートの説明です。

Enterprise 文字列(Enterprise String)

トラップのメイン OID です。 文字列を検索します。 たとえば、OID の一部を検索するならば、1.21.34.2.3 という表現が利用でき、それを含むすべての OID をフィルタリングすることができます。同様に、*1.21.34.2.3.* も可能です。ただし、* 文字を使用する必要はありません。

カスタム値/OID(Custom Value/OID)

トラップのその他フィールドである、“Value” フィールドおよび、“Custom OID”、“Custom Value” フィールドを検索します。たとえば、“Testing TRAP 225” という文字列を送信するトラップがある場合、“Testing.*TRAP.*” という正規表現で “Testing TRAP” を検索できます。

SNMP エージェント(SNMP Agent)

ラップを送信するエージェントの IP です。同様に、正規表現や文字列検索が使えます。

トラップタイプ(Trap type)

Cold Start, Warm start, Link down, Link up, Authentication failuer, other などのトラップタイプによるフィルタです。何も指定しなければ、トラップは通常 “Other” タイプとなり、任意のタイプが検索されます。

単一値(Single value)

トラップの値によるフィルタです。この例では、.666 で、MAIN OID の値のみ参照し、カスタムデータの追加 OID は参照しないことに注意してください。

バインド変数/データ #1-20(Variable bindings/Data #1-20)

マッチする正規表現で、1 から 20 まであります。マッチすると、アラートが発報されます。設定した値は、_snmp_fx_ マクロ(_snmp_f1_, _snmp_f2_,…)で利用できます。マッチング対象として利用できるのは最初の 20変数のみですが、マクロにはいくつでも(_snmp_f11_, _snmp_f12_, …)指定できます。

フィールド1(Field 1)

Field to set the Field 1 alarm command parameter. This is the field that will be used in case of choosing to generate an event, or the destination mail in case of choosing an eMail action (if you wish to overwrite the default email in the action). To fully understand how custom fields work in actions/alerts templates, read the documentation chapter that explains the alerts in Pandora FMS here.

アラートのコマンドパラメータに指定するフィールド1です。このフィールドは、イベントの生成を選択した場合に使用されるか、メールアクションを選択した場合の宛先に使われます(アクションのデフォルトのメールの宛先を上書きする場合)。 アクション/アラートテンプレートでのカスタムフィールドの動作を完全に理解するには、Pandora FMS のアラートについて説明している章を参照してください。

フィールド2(Field 2)

アラートのコマンドパラメータに指定するフィールド2です。例えば、電子メールを送信する場合は件名になります。 空白のままにするとアクションで定義した内容が使用されます。

フィールド3(Field 3)

アラートのコマンドパラメータに指定するフィールド3です。例えば、電子メールを送信する場合は本文になります。 空白のままにするとアクションで定義した内容が使用されます。

最小アラート数(Min. Number of Alerts)

アラートを発生させるトラップの最小数を指定します。

最大アラート数(Max. Number of Alerts)

指定された間隔(または時間しきい値)でアクションが実行される最大回数を指定します。

再通知間隔(Time Threshold)

アラートカウンタをリセットする時間を指定します。このカウントは、最小アラート数で利用されます。

優先度(Priority)

Combo where the alarm priority is set.

アラートの優先度の選択です。


The priorities of the alerts are different and have nothing to do with the priority of the traps, nor with the Pandora FMS events.


アラートの優先順位は、トラップの優先順位や Pandora FMS イベントとも何の関係もありません。

アラートアクション(Alert Action)

アラート実行時のアクションを選択します。イベントを選択すると、通常のアラート作成イベントは生成されません。

位置(Position)

低位のアラートが最初に評価されます。複数のアラートが単一のトラップにマッチした場合は、マッチした同じ位置のすべてのアラートが発報されますが、低位のアラートがマッチしても発報されません。

アラート フィールド で以下のマクロを利用できます。

  • _data_: トラップ全体
  • _agent_: エージェント名
  • _address_: IP アドレス
  • _timestamp_: トラップ日時
  • _snmp_oid_: トラップ OID
  • _snmp_value_: トラップ OID の値

次のようなトラップを受信したと仮定します。

trap_sample_for_alert.jpg

この場合、CPUオーバーヒートメッセージを含む可能性のあるトラップを識別するメインOID(1.3.6.1.4.1.2789.2005)がありますが(それ以外のものはわかりませんが)、1 と 2 の 2つの変数でその時の CPU のヒート状態と温度を表しています。 CPU のオーバーヒートトラップだけを識別したいので、トラップの最初の変数のヒートアラート文字列にマッチさせます(検索には最大20個まで設定できます)。

トラップの最初の部分を定義するのは簡単です。最初の最も重要なプレフィルタを作成するために、メイン OID のみを使用します。

trap_alert_definition_1.jpg

トラップ定義の 2番目は、必須部分を含みます。 トラップの最初の変数で “Heat alert” という文字列を探しますが、トラップをメインの OID で受信すると変数にはテキスト文字列が含まれていないため、アラートは発報されません。

trap_alert_definition_2.jpg

最後に、“Pandora Event” タイプのアラートを選択することで、受け取ったトラップので値を含む変数 1 と 2 を使用してメッセージをマッチさせます。

trap_alert_definition_3.jpg

アラートがオフになると、生成されるイベントは次のようになります。

event_result_of_alert.jpg

同一の発信元から来るトラップストームからシステムを守るために利用する 2つのサーバパラメータがあります。これは、pandora_server.conf にて行う次の設定です。

  • snmp_storm_protection: 同一の発信元 IP から指定した間隔(以下参照)内で処理する SNMP トラップの最大数です。
  • snmp_storm_timeout: SNMP トラップストームから守る秒単位の間隔です。ここで指定した時間の間は、同一発信元(IP)からは snmp_storm_protection で指定した数のトラップのみを処理します。
  • snmp_storm_silence_period: 特定のソースに対してストーム保護が起動されるたびに 0 より大きい場合は、現在の時間と静観時間が加算されます。 この時間が経過するまで、特定のソースからの新しいトラップは登録されません。

この保護が行われると、コンソールのイベントに反映されます。

トラップストーム保護は、トラップフィルタリングと合わせて、1日に何百、何千ものトラップを受け取っている場合に、不要なトラップを排除し一部のトラップのみを扱うことができます。

Some systems receive a high number of SNMP traps of which only a small percentage is of interest to monitor. From MonitoringSNMPSNMP Filters different filters can be defined. Press the Create button, add a description and as many filters as you need with the + button.

一部のシステムでは、大量の SNMP トラップを受信しますが、監視対象となるのはそのうちのほんのわずかです。 モニタリング(Monitoring)SNMPSNMP フィルタ(SNMP Filters) で、さまざまなフィルタを定義できます。 作成(Create) ボタンを押し、+ ボタンを使用して説明と必要な数のフィルタを追加します。

SNMP ログ(デフォルトは /var/log/pandora/pandora_snmptrap.log) のトラップエントリーに対して正規表現が適用されています。それは、次のような固定フォーマットです。

%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n

それぞれ次の意味です。

  • %y: 現在の年。
  • %m: 現在の月。(数値)
  • %l: 現在の月における日付。
  • %h: 現在の時間。
  • %j: 現在の分。
  • %k: 現在の秒。
  • %a: 発信元アドレス。(トラップバージョン 1 のみ)
  • %N: OID。
  • %w: トラップタイプ。(数値)
  • %W: トラップの説明。
  • %q: トラップのサブタイプ。(数値)
  • %v: タブで区切られた値のリスト。(カスタム OID)

例えば、192.168.50.20 からのすべてのトラップをフィルタするには、次のフィルタ設定をします。

複数のフィルタを同時に作成できるため、検索ではすべてのフィルタリング条件を満たすトラップが対象となります。

この機能は Enterprise 版のみです。

モニタ対象デバイスから送られるトラップをオペレータがわかりやすくするために、Pandora FMS にベンダー MIB をロードしたり、トラップを編集することができます。

Please note that all previous traps will not change their appearance, this will take effect with new traps that enter the system from this point on.

受信済のすべてのトラップは変更されないことに注意してください。これは、新たにシステムに入る新しいトラップから有効になります。

Editing an SNMP trap is the process of customizing the appearance of an SNMP trap in the Web Console. To edit a trap, use the menu OperationMonitoringSNMPSNMP trap editor.

SNMP トラップの編集は、Web コンソールでの SNMP トラップの見え方をカスタマイズするプロセスです。 トラップを編集するには、メニュー 操作(Operation)モニタリング(Monitoring)SNMPSNMP トラップエディタ(SNMP trap editor) を使用します。

The Custom OID is a Perl-compatible regular expression that will be compared to the part of the SNMP trap string that contains the variable bindings. It is not usually necessary to translate a trap.

カスタム OID(Custom OID) は、変数バインディングを含む SNMP トラップ文字列の一部と比較される Perl 互換の正規表現です。 通常、トラップを変換する必要はありません。

Custom OID is not intended to contain the entire bindings variable string, which may be longer than the maximum length it supports, but rather a regular expression that matches one or more variables.

カスタム OID(Custom OID) は、サポートされる最大長よりも長い可能性があるバインディング変数文字列全体を含めることを目的としたものではなく、1 つ以上の変数に一致する正規表現とすることを目的としています。

This option is used to upload MIB and expand the internal Pandora FMS translation database, so that when an SNMP trap arrives, it is automatically translated by its description. It is accessed through the menu OperationMonitoringSNMPMIB uploader.

このオプションは、MIB をアップロードし、Pandora FMS 内部変換データベースを拡張するために使用されます。これにより、SNMP トラップを受信すると、その説明に従って自動的に変換されます。 これには、メニュー 操作(Operation)モニタリング(Monitoring)SNMPMIB アップローダ(MIB uploader) からアクセスできます。

ベンダー MIB をアップロードするには、ファイルアップロード(Upload file(s)) をクリックしてファイルを選択し、Go をクリックします。

アップロードが完了すると、システムはそれをトラップライブラリに取り込みます。

This is an Enterprise feature and is configured in ManagementSetupSetupEnterpriseForward SNMP traps to an agent (if it exists).

これは Enterprise 版の機能であり、管理(Management)セットアップ(Setup)セットアップ(Setup)EnterpriseSNMP トラップをエージェント (存在する場合) に転送(Forward SNMP traps to an agent (if it exists) で設定します。

If this option is changed, the Pandora FMS server service must be restarted for it to take effect.

このオプションを変更した場合、有効にするためには Pandora FMS サーバサービスを再起動する必要があります。

This option (general to the server) forwards the SNMP trap to a special Agent Module called SNMPTrap as a text string, if and only if, the source IP address of the SNMP trap is defined as an agent's IP. When this occurs, the SNMP trap arrives as a line of text to the Agent within that Module, which is a Module that is defined only when the first SNMP trap arrives.

このオプション (サーバに対して一般) は、SNMP トラップの送信元 IP アドレスがエージェントの IP として定義されている場合に限り、SNMP トラップを SNMPTrap という特別なエージェントモジュールにテキスト文字列として転送します。 これが発生すると、SNMP トラップはテキスト行としてそのエージェントのモジュール内に到着します。このモジュールは、最初の SNMP トラップが到着したときにのみ定義されるモジュールです。

Text alerts can be specified on this Module, these being completely standard, like those of any module. This allows you to customize SNMP monitoring so that certain traps from certain sources can be treated as another module, and thus integrate it into the rest of the monitoring, including alert correlation.

このモジュールではテキスト アラートを指定できます。これらは他のモジュールと同様に完全に標準的なものです。 これにより、SNMP 監視をカスタマイズして、特定のソースからの特定のトラップを別のモジュールとして扱うことができ、アラート相関などを含む他の監視に統合できます。

Another solution is to set up an alert on the SNMP trap that activates an agent module. For example, SNMP trap consists of writing to a log file, and you have an agent that reads that file and executes when there is a 1 written. In this way, the module will jump when the desired SNMP trap is received and the correlation can be established based on the received trap.

別の解決策は、エージェントモジュールでの SNMP トラップにアラートを設定することです。 たとえば、ログファイルへの書き込みに関連した SNMP トラップがあり、ファイルを読み取り、1 が書き込まれたときに実行するエージェントがあった場合、目的の SNMP トラップを受信するとモジュールが動作し、受信したトラップに基づいて相関関係を確立できます。

The SNMP console is limited to receiving SNMP traps, as it only processes TRAP as an individual entity, but an SNMP trap can contain a lot of information.

SNMP コンソールは、TRAP を個別のエンティティとしてのみ処理するため、SNMP トラップの受信に限定されますが、SNMP トラップには多くの情報が含まれる可能性があります。

Sometimes it happens that the only monitoring that can be done is based on SNMP traps.

場合によっては、SNMP トラップに基づいた監視しか実行できない場合があります。

To do this, you can choose to process the information collected in an SNMP trap again through an external script, which acts as a plugin.

そのため、SNMP トラップで収集された情報を、プラグインとして機能する外部スクリプトを通じて再度処理することができます。

To do this, you must create a alert command that executes said script to post-process the received SNMP trap.

これを行うには、受信した SNMP トラップを後処理するスクリプトを実行する アラートコマンド を作成する必要があります。

The application of this technology is extremely broad, which is why each script must be customized since it can have a very dynamic structure. In many systems, the information received is not only text, but also numerical, which can feed numerical information modules and thus represent graphs, etc. It will always be necessary to keep in mind that the data generated in the XML should always be of asynchronous type.

この技術の応用範囲は非常に広く、スクリプトは非常に動的な構造を持つことができるため各スクリプトはカスタマイズする必要があります。 多くのシステムでは、受信する情報はテキストだけでなく数値もあり、数値情報モジュールにフィードしてグラフなどを表すことができます。XML で生成されるデータは常に 非同期型であることに留意する必要があります。

With Pandora FMS it is possible to enable forwarding of SNMP traps to an external host by enabling the snmp_forward_trap in the token in the Pandora configuration file.

Pandora FMS では、Pandora サーバの設定ファイルでsnmp_forward_trapトークンを有効にすることにより、SNMP trap を外部のホストへ転送することができます。

 snmp_forward_trap 1
 snmp_forward_ip 192.168.1.145
 snmp_forward_version 1
 snmp_forward_community public
 snmp_forward_secName
 snmp_forward_engineid
 snmp_forward_authProtocol
 snmp_forward_authPassword
 snmp_forward_privProtocol
 snmp_forward_privPassword
 snmp_forward_secLevel
 snmp_forward_trap 1
 snmp_forward_ip 192.168.1.145
 snmp_forward_version 2c
 snmp_forward_community public
 snmp_forward_secName
 snmp_forward_engineid
 snmp_forward_authProtocol
 snmp_forward_authPassword
 snmp_forward_privProtocol
 snmp_forward_privPassword
 snmp_forward_secLevel

この例は、SNMP v3 trap の知識が必要になるため特に難しいです。リモートの SNMP エージェントがsnmp_forward_ipで定義されており、次の設定が /etc/snmp/snmptrapd.conf ファイルに書かれていることを想定します。

createUser -e 0x0102030405 myuser MD5 mypassword DES myotherpassword

Pandora サーバの設定ファイルは次のようになります。

 snmp_forward_trap 1
 snmp_forward_ip 192.168.1.145
 snmp_forward_version 3
 snmp_forward_secName myuser
 snmp_forward_engineid 0x0102030405
 snmp_forward_authProtocol MD5
 snmp_forward_authPassword mypassword
 snmp_forward_privProtocol DES
 snmp_forward_privPassword myotherpassword
 snmp_forward_secLevel authNoPriv

より詳細は、 NET-SNMP's v3 Trapsを参照してください。

何らかの理由により、snmptrapd デーモンを Pandora FMS から独立して管理したい場合(Pandora FMS デーモンとは独立して停止・起動をしたい場合)は、いくつか考慮すべきことがあります。

1. You must also activate the snmpconsole parameter on the Pandora FMS server.

1. Pandora FMS サーバにおいて snmpconsole パラメータを有効化する必要があります

2. The logs configured on the Pandora FMS server must be the same as those generated in the independent call to snmptrapd

2. Pandora FMS サーバで設定されるログは、snmptrapd を独立して管理する場合でも同じでなければいけません。

3. The call to snmptrapd must have a specific format since the call to the standard system daemon is invalid. The call should be like this (the -A parameter is especially important):

3. snmptrapd の呼び出しは特定のフォーマットである必要があり、標準的なシステムからの呼び出しは利用できません 。呼び出しは次のようにする必要があります(パラメータ -A はとても重要です)。

/usr/sbin/snmptrapd -A -t -On -n -a -Lf /var/log/pandora/pandora_snmptrap.log -p /var/run/pandora_snmptrapd.pid --format1=SNMPv1[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n --format2=SNMPv2[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%b[**]%v\n

4. You must configure the token in the server configuration file:

4. snmptrapd トークンが、Pandora FMS 設定ファイル内に設定されている必要があります。

snmp_trapd manual

5. この機能を有効化したら、次の手順を実施する必要があります。

  • Change the configuration in /etc/pandora/pandora_server.conf.
  • Stop the Pandora FMS server.
  • End the snmptrapd process.
  • Start upsnmptrapd manually (with the format indicated above).
  • Start the Pandora FMS server.
  • /etc/pandora/pandora_server.conf の設定を変更
  • Pandora FMS サーバを停止
  • snmptrapd プロセスが動作していないことを確認 (もし動いていたら、停止するまで待つか kill します)
  • snmptrapd を手動で起動 (上記のフォーマットにて)
  • Pandora FMS サーバを起動

The snmptrapd process can be stopped and started without the need to stop and start the Pandora FMS server process, as long as the files pandora_snmptrap.log.index and pandora_snmptrap.log are not modified. If these files are modified, it is necessary to restart the Pandora FMS server. If you need to externally rotate the trap log, you must restart the Pandora FMS server after deleting the aforementioned files.

pandora_snmptrap.log.index および pandora_snmptrap.log が変更されていなければ、snmptrapd プロセスは、pandora サーバプロセスの停止および起動に依存せず、停止および起動することができます。これらのファイルに変更が加わっている場合は、pandora サーバの再起動が必要です。トラップのログファイルを外部でローテートする必要がある場合は、前述の 2つのファイルを削除したあとに pandora サーバを再起動する必要があります。

It is more efficient for the SNMP console to directly process traps from the snmptrapd log file. This configuration is recommended only if reliability or direct connectivity is a concern.

SNMP コンソールが snmptrapd ログファイルからトラップを直接処理する方が効率的です。 この設定は、信頼性または直接接続に何らかの懸念がある場合にのみ推奨されます。

If SNMP traps are sent to an external manager over an unreliable connection, some information will be lost. Pandora FMS allows you to instead forward traps from a local snmptrapd to your Pandora FMS server in a reliable way.

SNMP トラップが信頼性の低い接続を介して外部マネージャに送信されると、一部の情報が失われます。 Pandora FMS では、ローカル snmptrapd からトラップを信頼できる方法で Pandora FMS サーバに転送できます。

Prerequisites:

前提条件:

  • A local snmptrapd that is receiving traps.
  • A local Pandora FMS agent.
  • An installation of Pandora FMS.
  • ローカルの snmptrapd がトラップを受信すること。
  • ローカルの Pandora FMS エージェントがあること。
  • Pandora FMS がインストールされていること。

remote_snmp_trap_schema.jpg

  • SNMP エージェントは、ローカルの snmptrapd にトラップを送信します。
  • ローカルの Pandora FMS エージェントが snmptrapd のログファイルからトラップを読み取り、XML データファイルを用いて指定の Pandora FMS サーバへ送信します。それは XML バッファに保存され必要に応じてリトライされます。
  • データサーバは、XML データファイルからトラップを読み込み、プレーンテキストファイルに展開します。
  • SNMP コンソールは、プレーンテキストファイルからトラップを処理します。

snmptrapd

/etc/snmp/snmptrapd.conf を編集し、Pandora FMS と互換性があるフォーマットでログをファイルに記録する設定になっているか確認します。(必要に応じてログファイル名を変更することができます)

[snmp] logOption f /var/log/snmptrapd.log
format1 SNMPv1[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%a[**]%N[**]%w[**]%W[**]%q[**]%v\n
format2 SNMPv2[**]%4y-%02.2m-%l[**]%02.2h:%02.2j:%02.2k[**]%b[**]%v\n
Pandora FMS エージェント

snmptrapd のログファイルからデータを読む Pandora FMS エージェントに付属の grep_snmptrapd プラグインを利用します。

ローカルのエージェント設定ファイル /etc/pandora/pandora_agent.conf を編集し、必要に応じて snmptrapd のログファイルのパスを指定する次の行を追加します。

module_plugin grep_snmptrapd /var/log/snmptrapd.log

Pandora FMS サーバ

SNMP コンソールが、データサーバにて書かれた外部ログファイルからトラップを処理するよに設定する必要があります。

サーバ設定ファイル /etc/pandora/pandora_server.conf 編集し、次の設定をします。

  • SNMP コンソールが有効であるか確認します。
snmpconsole 1
  • データサーバが有効であるか確認します。
dataserver 1
  • 外部 SNMP ログファイルを設定します。存在しない場合は、SNMP コンソールが作成します。
snmp_extlog /var/log/pandora/pandora_snmptrap.ext.log

snmp_extlog には、Pandora FMS サーバが書き込むことができる任意のファイルを指定できますが、snmp_logfile (/etc/pandora/pandora_agent.conf でも定義されています) とは異なるものである必要があります。

This tool allows you to generate custom SNMP traps that you can later view in the SNMP console. It is accessed through the menu OperationSNMPSNMP trap generator.

このツールを使用すると、後で SNMP コンソールで表示できるカスタム SNMP トラップを生成できます。 これには、メニュー 操作(Operation)SNMPSNMP トラップジェネレータ(SNMP trap generator) からアクセスできます。

In SNMP Type choose an SNMP type from the following options:

SNMP タイプ(SNMP Type) で、次のオプションから SNMP タイプを選択します。

  • Cold Start: Indicates that the agent has been started or restarted.
  • Warm Start: Indicates that the agent configuration has been modified.
  • Link down: Indicates that the communication interface is out of service (inactive).
  • Link up: Indicates that a communication interface has been activated.
  • Authentication failure: Indicates that the agent received a request from an unauthorized (community controlled) NMS.
  • EGP neighbor loss: Indicates that on systems where routers use the EGP protocol, a nearby host is out of service.
  • Enterprise: This category contains all new SNMP traps, including those from vendors.
  • Cold Start: エージェントが開始または再開されたことを意味します。
  • Warm Start: エージェント設定が変更されたことを意味します。
  • Link down: 通信インタフェースが利用できない状態になった(無効化)ことを意味します。
  • Linu up: 通信インタフェースが利用できる状態になったことを意味します。
  • Authentication failure: エージェントが(コミュニティによって)認証できない NMS を受信したことを意味します。
  • EGP neighbor loss: ルータが EGP プロトコルを使用しているシステムで、近くのホストが利用できない状態になったことを示します。
  • Enterprise: ベンダトラップを含む、すべての新規トラップです。

Pandora FMS ドキュメント一覧に戻る

トラップに定義されたアラートは、Pandora のアラートエンジンとは完全に独立しています。そのために、“温度が 29度に達したらアラート上げるといったことや、冗長化電源ダウンのトラップを受信したときにアラートを上げる” といったことがアラート管理からは設定できません。この種のアラートは、Pandora FMS のモジュールとは独立しており、トラップコンソールも、これらの要素に関連していません。

SNMP コンソールからフォワードされたトラップを含む、特殊な SNMP トラップモジュール:

これを解決するために、“エージェントへの SNMP トラップ転送(Agent SNMP Trap Forwarding)” という手法が存在します。このオプションは、トラップの発信元 IP アドレスが特定のエージェントのアドレスであった場合、トラップをそのエージェントの “SNMPTrap” という名前のモジュールへ文字列として転送します。この場合は常に、トラップはエージェントのモジュールにてテキストで受信します。モジュールは、最初のトラップを受信したときに定義されます。

テキストのアラートは、通常のモジュールにおける標準的な方法で定義できます。これにより、別の発信元からのトラップを、それぞれ別のモジュールで扱うための SNMP モニタリングのカスタマイズが可能です。それにより、アラートの設定もそれぞれ可能になります。

SNMPトラップデータサンプル:

これは、エンタープライズ版の機能です。次のように、メインの設定画面で有効にできます。

エージェントへのトラップフォワーディングを有効にするオプション設定:

設定を変更したら、有効にするためには Pandora FMS サーバを再起動する必要があります。

ほかには、エージェントのモジュールに、トラップを関連付ける手段もあります。例えば、トラップ受信で何らかのログファイルに “1” を書くようにし、それを読むモジュールを定義します。この方法により、想定したトラップを受信したときにモジュールの状態が変化するようになり、トラップの受信と関連付けることができます。

SNMP コンソールは、トラップを取得する目的のためだけに作られています。トラップは個々のアイテムとしてのみ処理されます。 1つのトラップは多くの情報を含むことができます。 場合によっては、実行できる唯一の監視がトラップに基づいている場合があります。 そのために、取得した 1つのトラップの情報をプラグインとして動作する外部スクリプトで後処理することができます。

トラップの詳細データを処理するために、アラートの結果としてトラップのすべてのデータをスクリプトへ渡すことができます。以下に例を示します。これは、Pandora の SNMP コンソールログで見ることができるトラップビューです。

 2010-08-26 12:01:46 pandora 10.201.246.2 .1.3.6.1.4.1.1722 .1.3.6.1.4.1.1722.2.10.1.1.1 233 .1.3.6.1.4.1.1722.2.10.1.1.3 = STRING: 
 AIX_Software_Failure .1.3.6.1.4.1.1722.2.10.1.1.2 = STRING: 08 25 2010 08:23:43:697685 .1.3.6.1.4.1.1722.2.10.1.1.8 = STRING: 1: A 
 software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource 
 SYSPROC. Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED. .1.3.6.1.4.1.1722.2.10.1.1.6 = STRING: 8 
 .1.3.6.1.4.1.1722.2.10.1.1.11 = STRING: An application may not work properly .1.3.6.1.4.1.1722.2.10.1.1.10 = STRING: An application 
 may not work properly .1.3.6.1.4.1.1722.2.10.1.1.12 = INTEGER: 4 .1.3.6.1.6.3.1.1.4.3.0 = OID: .1.3.6.1.4.1.1722

snmp2.jpg

snmp3.jpg

スクリーンショットで、どのようにアラートを作成するかがわかると思います。トラップの内容 (_data_) に応じてスクリプトを実行します。また、SNMP アラートが作成されます。この場合、特定の OID (.1.3.6.1.4.1.1722.2.10.1.1.1) にマップされます。マップする OID の範囲を広くすることも可能で、例えば、(.1.3.6.1.4.1.1722) を指定すれば、この OID すべてのトラップ (AIX の特定 MIB の一部を想定) でスクリプトが呼び出されるようになります。

このデータを処理するスクリプトが実行されます。 また、エージェントからのデータであるかのように、XMLファイルを作成し、'/var/spool/pandora/data_in' に移動することによって、Pandora FMS に直接データを書き込み、トラップを分析できます。 この場合の基本的なスクリプトは、複雑な情報を生成するスクリプトです。 すでにこのトラップに関する十分な情報を処理する処理は、以下から構成されます。

  • オリジナルIPアドレス
  • メインイベント (コールドスタート)
  • 2つ目のイベント(説明): AIX_Software_Failure, 1: A software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource SYSPROC. Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED, An application may not work properly, An application may not work properly.

これらのデータをパースするスクリプトを作る場合、例えば “miscript.pl” というスクリプトであれば、/var/spool/pandora/data_in にランダムな番号をつけたファイル名で XML ファイルを書くようにします。 例えば、snmp_gateway.31415.data です。

生成した XML ファイルは次のようになります。

<?xml version='1.0' encoding='ISO-8859-1'?>
<agent_data description='' group='' os_name='aix' os_version='' interval='300' version='3.1(Build 100608)' timestamp='2010/08/26 12:20:26' agent_name='10.201.246.2'>
  <module>
    <name><![CDATA[Critical_Event]]></name>
    <description><![CDATA[]]></description>
    <type>async_proc</type>
    <data><![CDATA[1]]></data>
  </module>
<module>
    <name><![CDATA[events]]></name>
    <description><![CDATA[]]></description>
    <type>generic_string</type>
    <datalist>
      <data><value><![CDATA[AIX_Software_Failure]]></value></data>
      <data><value><![CDATA[A software error PERM with label CORE_DUMP, identifier C69F5C9B occurred at Wed Aug 2 5 10:22:28 DFT 2010 on dvs02 for resource SYSPROC.]]></value></data>
      <data><value><![CDATA[Cause is SOFTWARE PROGRAM ABNORMALLY TERMINATED, An application may not work properly, An application may not work properly.]]></value></data>
    </datalist>
  </module>
</agent_data>

アプリケーションは何でも実現できカスタマイズ可能です。とても強力な構造になっています。多くのシステムでは、情報はテキストだけではなく数値でも取得できます。グラフを書きたい場合等では、数値情報のモジュールを利用します。なお、全てのデータは常に非同期であることに注意してください。

最も問題となりうるモニタリングの一つに、VMware ESX のようにバージョンによって情報の収集方法が異なるベンダが提供のシステムがあります。この章では、外部 SNMP トラップハンドラを使って、ESX システムをモニタする方法を説明します。

ESX のトラップは次のようになっています。

 .1.3.6.1.4.1.6876.4.3.301 = STRING: "host"  .1.3.6.1.4.1.6876.4.3.302 = STRING: "c7000-06-01.tsm.inet"      .1.3.6.1.4.1.6876.4.3.303 = ""  
 .1.3.6.1.4.1.6876.4.3.304 = STRING: "Green" .1.3.6.1.4.1.6876.4.3.305 = STRING: "Yellow"    .1.3.6.1.4.1.6876.4.3.306 = STRING: "Host 
 cpu usage - Metric Usage = 1%"
 .1.3.6.1.4.1.6876.4.3.301 = STRING: "host"  .1.3.6.1.4.1.6876.4.3.302 = STRING: "dl360-00.tsm.inet" .1.3.6.1.4.1.6876.4.3.303 = ""  
 .1.3.6.1.4.1.6876.4.3.304 = STRING: "Yellow".1.3.6.1.4.1.6876.4.3.305 = STRING: "Green"     .1.3.6.1.4.1.6876.4.3.306 = STRING: "Host 
 memory usage - Metric Usage = 84%"
 .1.3.6.1.4.1.6876.4.3.301 = STRING: "host"  .1.3.6.1.4.1.6876.4.3.302 = ""  .1.3.6.1.4.1.6876.4.3.303 = ""  .1.3.6.1.4.1.6876.4.3.304 = 
 STRING: "Red"       .1.3.6.1.4.1.6876.4.3.305 = STRING: "Green" .1.3.6.1.4.1.6876.4.3.306 = STRING: "Datastore usage on disk - Metric 
 Storage space actually used = 55%"

見ての通り、トラップに CPU、ディスク、メモリ の情報がまとめられています。トラップの内容を分析し、XML ファイルを作成する小さなスクリプトを書き、トラップハンドラにすることを考えます。トラップハンドラの書き方は共通です。手順は 4つのステップとなります。

  1. ハンドラスクリプトを作成します。以下に示すスクリプトを参考にしてください。
  2. アラートコマンドを作成します。
  3. 上記のコマンドを使って、アラートアクションを作成します。必要に応じて適用先のエージェントを指定します。(複数の ESX がある場合は、それぞれ別のエージェントに適用したいような場合もあるかもしれません。)
  4. エンタープライズ OID (この手法でモニタする全トラップのもの) および発信元 IP アドレスにマップする SNMP トラップアラートを作成します。

では、トラップハンドラを作成する、最初のステップを見てみましょう。

トラップハンドラ: esx_trap_manager.pl

#!/usr/bin/perl
# (c) Sancho Lerena 2010 <slerena@artica.es>
# Specific Pandora FMS trap collector for ESX 

use POSIX qw(setsid strftime);

sub show_help {
	print "\nSpecific Pandora FMS trap collector for ESX\n";
	print "(c) Sancho Lerena 2010 <slerena@artica.es>\n";
	print "Usage:\n\n";
	print "   esx_trap_manager.pl <destination_agent_name> <TRAP DATA>\n\n";
	exit;
}

sub writexml {
	my ($hostname, $xmlmessage ) = @_;
	my $file = "/var/spool/pandora/data_in/$hostname.".rand(1000).".data";

	open (FILE, ">> $file") or die "[FATAL] Cannot write to XML '$file'";
	print FILE $xmlmessage;
	close (FILE);
}

if ($#ARGV == -1){
	show_help();
}

$chunk = "";

# First parameter is always destination host for virtual server
$target_host = $ARGV[0];

foreach $argnum (1 .. $#ARGV) {
	if ($chunk ne ""){
		$chunk .= " ";
	}
	$chunk .= $ARGV[$argnum];
}

my $hostname = "";
my $now = strftime ("%Y-%m-%d %H:%M:%S", localtime());
my $xmldata = "<agent_data agent_name='$target_host' timestamp='$now' version='1.0' os='Other' os_version='ESX_Collectordime ' interval='9999999999'>";

if ($chunk =~ m/.1.3.6.1.4.1.6876.4.3.302 \= STRING\: ([A-Za-z0-9\-\.]*)\s\.1/){
	$hostname = "_".$1;
}

if ($chunk =~ m/Host cpu usage \- Metric Usage \= ([0-9]*)\z/){
	$value = $1;
	$module_name = "CPU_OCUPADA$hostname";
}

if ($chunk =~ m/Host memory usage \- Metric Usage = ([0-9\.]*)\z/){
	$value = $1;
	$module_name = "MEMORIA_OCUPADA$hostname";
}

if ($chunk =~ m/Datastore usage on disk \- Metric Storage space actually used \= ([0-9\.]*)\z/){
	$value = $1;
	$module_name = "DISCO_OCUPADO$hostname";
}

$xmldata .= "<module><name>$module_name</name><type>async_data</type><data>$value</data></module>\n";

$xmldata .= "</agent_data>\n";
writexml ($target_host, $xmldata);

ステップ 2: アラートコマンドの作成

この例では、コマンドスクリプトを /tmp に置いています。(実際には、より安全な場所に置いてください。) そして、それに実行権限を与えます。(chmod 755)

snmp3.jpg

ステップ 3: アラートアクションの作成

特定のエージェントのトラップの情報を送信するアクションを作成します。この場合、情報は WINN1247VSR というエージェントに送られます。上記のコマンドは、エージェント名をパラメータとして受け取り、(ESX バーチャルセンターの) 全ての情報を処理し、トラップからのデータを分割します。特に制限はなく、トラップで送られる全ての情報を処理します。

snmp4.jpg

ステップ 4: SNMP アラートの作成

作成したアクションを使って、トラップのアラートを設定します。

snmp5.jpg

ESX の全てのトラップを処理するために、ESX のトラップにマップする OID である .1.3.6.1.4.1.6876.4.3.301 を指定します。IP アドレスフィルタリングにより、それぞれの VirtualCenter のソース IP アドレスでフィルタリングすることもできます。

データの表示

以下に情報の参照例を示します。これにより、通常のモジュールとして管理できます。

snmp6.png

snmp7.jpg

  • ja/documentation/pandorafms/monitoring/08_snmp_traps_monitoring.txt
  • 最終更新: 2024/03/01 08:34
  • by junichi