SNMP トラップ監視
概要
スイッチ、ルータ、サーバ、プリンタ、AP など、SNMP をサポートするネットワークデバイスは、インターフェイスの障害、CPU またはネットワークの負荷が高すぎたり、UPS の状態が変化したり、ディスクの障害が発生したときなどに、アラーム(SNMP トラップ)を送信することができます。各デバイスには、可能なイベントの独自のコレクションがあり、これは MIB と呼ばれます。この場合、デバイスのポーリングに使用する MIB とは異なります。
トラップは、デバイスにて何かが発生した場合に非同期で送信されます。Pandora FMS には、モニタリング対象から送られてくるトラップを表示するトラップ受信コンソールがあり、また、トラップに対してアラートを設定することができます。SNMP トラップは、Pandora FMS の起動時に起動される、OS の SNMP サーバデーモンで受け取ります。このサーバは通常ログファイルを以下に保存します。
/var/log/pandora/pandora_snmptrap.log
The Pandora FMS SNMP console allows you to create rules to rename numerical OIDs to alphanumeric OIDs or simple descriptive text strings, so that it is more intuitive to work with SNMP traps. Pandora FMS also allows you to load trap MIBs from any manufacturer to automatically define those rules.
Pandora FMS SNMP コンソールを使用すると、数値 OID の名前を英数字 OID または単純な説明テキスト文字列に変更するルールを作成できるため、SNMP トラップをより直感的に操作できるようになります。 Pandora FMS では、任意のメーカーのトラップ MIB をロードして、それらのルールを自動的に定義することもできます。
In order to work with SNMP traps, first modify the following parameter in /etc/pandora/pandora_server.conf
to enable the SNMP Console:
最初に、SNMP コンソールを有効化するためには /etc/pandora/pandora_server.conf
内の以下のパラメータを編集する必要があります。
snmpconsole 1
So that the traps SNMP appear translated (whether the variable links or the Enterprise SNMP chain) the following parameters must be activated:
トラップを文字列変換したい場合(変数のバインディングまたは Enterprise 文字列のいずれか)は、次のオプションも有効化します。
translate_variable_bindings 1 translate_enterprise_strings 1
The /etc/snmp/snmptrapd.conf
file must also be configured with the necessary parameters, for example:
また、/etc/snmp/snmptrapd.conf
ファイルを必要なパラメータで設定する必要があります。例:
authCommunity log public disableAuthorization yes
With this configuration, traps will be created for the public community and will not require authorization.
この設定では、コミュニティ public、認証無しでトラップを受け付けます。
SNMPv3
SNMPv3 トラップは、送信ユーザが createUser ディレクティブを用いて /etc/snmp/snmptrapd.conf に追加されていないと受信を拒否します。例を以下に示します。
disableAuthorization yes createUser -e 0x0102030405 snmpv3user SHA mypassword AES
engineID は、-e オプションと共に指定する必要があります。そうしないと、SNMPv3 INFORM のみを受信します。
トラップ受信コンソールへのアクセス
Operation → Monitoring → SNMP → SNMP Console. Using the magnifying glass icon in the first column you can display all the SNMP trap information, other important columns:
操作(Operation) → モニタリング(Monitoring) → SNMP → SNMP コンソール(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 日以上経過したもの)
SNMP トラップアラート
概要
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 trap alerts have several fields that will be used to match SNMP traps received on the console. You can useThe fields you want can optionally be used to create more general or more specific rules depending on the need. It is accessed through the menu Management → Alerts → SNMP alerts → Create. Important parameters:
SNMP トラップアラートには、コンソールで受信した SNMP トラップがアラート条件にマッチするかを検索するために使用されるいくつかのフィールドがあります。 オプションで、必要に応じて、より一般的なルールやより具体的なルールを作成するフィールドを使用することができます。管理(Management) → アラート(Alerts) → SNMP アラート(SNMP alerts) → 作成(Create) メニューでアクセスできます。以下が重要なパラメータです。
- Enterprise String: Main OID of the SNMP trap. The presence of the chain will be searched, and it may even be a piece of the OID; for example
1.21.34.2.3
in a longer OID. It can be used in the same way in the field, and will perform the search as if it were:*1.21.34.2.3*
(it is unnecessary to use asterisks as wildcard characters). For exact matches, end the string with the$
character. - Custom Value/OID: Searches the Value fields of the SNMP trap, as well as the Custom OID and Custom Value fields, that is, in the rest of the fields of TRAP. Search by regular expression works here. For example, if you have an SNMP trap that sends the string
Testing TRAP 225
it is possible to search for any trap with the substringTesting TRAP
using the regular expressionTesting.*TRAP.*
- SNMP Agent (IP): IP address of the Agent that sends the SNMP trap. It also allows you to use a regular expression or a substring.
- Trap type: Filter by trap type. Most of the traps generated are usually of type Other; If you don't specify anything, it will look for any type of trap.
- Trap subtype: Filter alerts by SNMP trap subtype. It works separately from Trap type.
- Single value: Filters by the trap value. This only refers to the single value of the primary OID, not any secondary OID.
- Variable bindings/Data #1-20: These are regular expressions that try to match variables 1 to 20. If there is a success, the alert is triggered. The value of the variable is saved in the corresponding
_snmp_fx_
macro (_snmp_f1_
,_snmp_f2_
, …). Although only one regular expression can be specified for twenty variables, the_snmp_fx_
macros are available for all of them (_snmp_f11_
,_snmp_f12_
, …). - Alert Action: Combo where the action that will execute the alert is determined. If an event is chosen, the normal alert generation event will not be generated.
- Priority: Combo where the alarm priority is established.
- Enterprise 文字列(Enterprise String): トラップのメイン OID です。文字列が存在するかを検索でき、これはたとえば
1.21.34.2.3
をより長い OID に含むかどうかというように、OID の一部分とすることもできます。それを含むすべての OID をフィルタリングすることができます。*1.21.34.2.3.*
としても同様に動作します(ワイルドカードとして * 文字を使用する必要はありません)。厳密にマッチさせるために末尾を$
とすることもできます。 - カスタム値/OID(Custom Value/OID): トラップのその他フィールドである、Value フィールドおよび、Custom OID 、Custom Value フィールドを検索します。ここでは正規表現での検索も可能です。たとえば、
Testing TRAP 225
という文字列を送信するトラップがある場合、Testing.*TRAP.*
という正規表現で部分文字列Testing TRAP
を検索できます。 - SNMP エージェント (IP)(SNMP Agent (IP)): トラップを送信するエージェントの IP アドレスです。同様に、正規表現や文字列検索が使えます。
- トラップタイプ(Trap type): トラップタイプによるフィルタです。多くのトラップは通常 Other タイプとなり、何も指定しなければ任意のタイプが検索されます。
- トラップサブタイプ(Trap subtype): トラップサブタイプによるフィルタです。トラップタイプ とは個別に動作します。
- 単一値(Single value): トラップの値によるフィルタです。プライマリ OID の値のみ参照し、セカンダリ OID は参照しません。
- バインド変数/データ #1-20(Variable bindings/Data #1-20): 1 から 20 までの変数へマッチさせる正規表現です。マッチすると、アラートが発報されます。設定した値は、
_snmp_fx_
マクロ(_snmp_f1_
,_snmp_f2_
,…)で利用できます。20個の変数で指定できる正規表現は1つのみですが、_snmp_fx_
マクロは全て(_snmp_f11_
,_snmp_f12_
, …)に対して利用できます。 - アラートアクション(Alert Action): アラート実行時のアクションを選択するコンボボックスです。イベントを選択すると、通常のアラート作成イベントは生成されません。
- 優先度(Priority): アラートの優先度を設定するコンボボックスです。
The priorities of the alerts are different and have nothing to do with the priority of SNMP traps, nor with that of Pandora FMS events.
アラートの優先順位は、トラップの優先順位や Pandora FMS イベントとも何の関係もありません。
アラートフィールドマクロ
アラート フィールド で以下のマクロを利用できます。
- _data_: トラップ全体
- _agent_: エージェント名
- _address_: IP アドレス
- _timestamp_: トラップ日時
- _snmp_oid_: トラップ OID
- _snmp_value_: トラップ OID の値
トラップアラートの例
次のようなトラップを受信したと仮定します。
この場合、CPUオーバーヒートメッセージを含む可能性のあるトラップを識別するメインOID(1.3.6.1.4.1.2789.2005)がありますが(それ以外のものはわかりませんが)、1 と 2 の 2つの変数でその時の CPU のヒート状態と温度を表しています。 CPU のオーバーヒートトラップだけを識別したいので、トラップの最初の変数のヒートアラート文字列にマッチさせます(検索には最大20個まで設定できます)。
トラップの最初の部分を定義するのは簡単です。最初の最も重要なプレフィルタを作成するために、メイン OID のみを使用します。
トラップ定義の 2番目は、必須部分を含みます。 トラップの最初の変数で “Heat alert” という文字列を探しますが、トラップをメインの OID で受信すると変数にはテキスト文字列が含まれていないため、アラートは発報されません。
最後に、“Pandora Event” タイプのアラートを選択することで、受け取ったトラップので値を含む変数 1 と 2 を使用してメッセージをマッチさせます。
アラートがオフになると、生成されるイベントは次のようになります。
大量のトラップがある環境での動作
トラップストーム保護
To do this, the following configuration parameters are used in the pandora_server.conf
file:
これを利用するためには、pandora_server.conf
ファイルで以下のパラメータを設定します。
snmp_storm_protection
: Maximum number of traps processed in the protection interval.snmp_storm_timeout
: Trap storm protection interval in seconds. During that interval only X traps from the same source (same IP address) can be processed.snmp_storm_silence_period
: If it is greater than 0, each time the storm protection is triggered for a specific source, the current time plus the silence time will be added. Until this time passes, new SNMP traps will not be registered for the specific source.snmp_storm_protection
: 保護間隔内で処理する SNMP トラップの最大数です。snmp_storm_timeout
: 秒単位の SNMP トラップストーム保護間隔です。ここで指定した時間の間は、同一発信元(同一 IP アドレス)からは snmp_storm_protection で指定した数のトラップのみを処理します。snmp_storm_silence_period
: 0 より大きい場合、特定のソースに対してストーム保護が起動されるたびに現在の時間とこの静観時間が加算されます。 この時間が経過するまで、特定のソースからの新しいトラップは登録されません。
Trap storm protection, combined with traps filtering, allows that if hundreds of thousands are received a day, a few thousand can be worked on, avoiding redundant or useless.
トラップストーム保護はトラップフィルタリングと組み合わせて、1日に何百、何千ものトラップを受け取っている場合に、不要なトラップを排除し一部のトラップのみを扱うことができます。
サーバにおけるトラップフィルタリング
Some systems receive a high number of SNMP traps of which only a small percentage is of interest to monitor. From Monitoring → SNMP → SNMP 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) → SNMP → SNMP フィルタ(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 からのすべてのトラップをフィルタするには、次のフィルタ設定をします。
複数のフィルタを同時に作成できるため、検索ではすべてのフィルタリング条件を満たすトラップが対象となります。
トラップのカスタマイズ
モニタ対象デバイスから送られるトラップをオペレータがわかりやすくするために、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 Operation → Monitoring → SNMP → SNMP trap editor.
SNMP トラップの編集は、Web コンソールでの SNMP トラップの見え方をカスタマイズするプロセスです。 トラップを編集するには、メニュー 操作(Operation) → モニタリング(Monitoring) → SNMP → SNMP トラップエディタ(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 つ以上の変数に一致する正規表現とすることを目的としています。
ベンダー MIB のロード
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 Operation → Monitoring → SNMP → MIB uploader.
このオプションは、MIB をアップロードし、Pandora FMS 内部変換データベースを拡張するために使用されます。これにより、SNMP トラップを受信すると、その説明に従って自動的に変換されます。 これには、メニュー 操作(Operation) → モニタリング(Monitoring) → SNMP → MIB アップローダ(MIB uploader) からアクセスできます。
ベンダー MIB をアップロードするには、ファイルアップロード(Upload file(s)) をクリックしてファイルを選択し、Go をクリックします。
アップロードが完了すると、システムはそれをトラップライブラリに取り込みます。
SNMP トラップのエージェントへの送信
Menu Management → Settings → System settings → Enterprise options → Forward SNMP traps to an agent (if it exists).
管理(Management) → セットアップ(Settings) → セットアップ(System settings) → Enterprise オプション(Enterprise options) → SNMP トラップのエージェント (存在する場合) への転送(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, as long as the source IP address of the SNMP trap is defined as an agent's address IP. When this takes place, 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 トラップが到着したときにのみ定義されるモジュールです。
Associate a trap with the rest of Pandora FMS alerts
SNMP トラップの Pandora FMS アラートへの関連付け
Text alerts may be specified on this Module, these being completely standard, like those of any module. To that end, the Yes and change status option must be checked so that the module can change its status.
他のモジュール同様全く通常通り、このモジュールに文字列アラートを設定できます。そのために はい、ステータスを更新します(Yes and change status) オプションにチェックすると、モジュールはステータスを変化できます。
This allows you to customize SNMP monitoring so that certain traps from certain sources can be processed as any other module, and thus integrate it into 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 runs when there is a 1
written. That 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 トラップを受信するとモジュールが動作し、受信したトラップに基づいて相関関係を確立できます。
外部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 で生成されるデータは常に 非同期型であることに留意する必要があります。
SNMP トラップ転送
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 v1 を使った 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 v2c を使った trap 転送設定例
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 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 デーモンの個別管理
何らかの理由により、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 サーバを再起動する必要があります。
SNMP トラップバッファリング
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 がインストールされていること。
アーキテクチャ
- 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 Operation → SNMP → SNMP trap generator.
このツールを使用すると、後で SNMP コンソールで表示できるカスタム SNMP トラップを生成できます。 これには、メニュー 操作(Operation) → SNMP → SNMP トラップジェネレータ(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: ベンダトラップを含む、すべての新規トラップです。
(OBSOLETE) Pandora アラートとトラップの関係 / SNMP エージェントのトラップ転送
トラップに定義されたアラートは、Pandora のアラートエンジンとは完全に独立しています。そのために、“温度が 29度に達したらアラート上げるといったことや、冗長化電源ダウンのトラップを受信したときにアラートを上げる” といったことがアラート管理からは設定できません。この種のアラートは、Pandora FMS のモジュールとは独立しており、トラップコンソールも、これらの要素に関連していません。
SNMP コンソールからフォワードされたトラップを含む、特殊な SNMP トラップモジュール:
これを解決するために、“エージェントへの SNMP トラップ転送(Agent SNMP Trap Forwarding)” という手法が存在します。このオプションは、トラップの発信元 IP アドレスが特定のエージェントのアドレスであった場合、トラップをそのエージェントの “SNMPTrap” という名前のモジュールへ文字列として転送します。この場合は常に、トラップはエージェントのモジュールにてテキストで受信します。モジュールは、最初のトラップを受信したときに定義されます。
テキストのアラートは、通常のモジュールにおける標準的な方法で定義できます。これにより、別の発信元からのトラップを、それぞれ別のモジュールで扱うための SNMP モニタリングのカスタマイズが可能です。それにより、アラートの設定もそれぞれ可能になります。
SNMPトラップデータサンプル:
これは、エンタープライズ版の機能です。次のように、メインの設定画面で有効にできます。
エージェントへのトラップフォワーディングを有効にするオプション設定:
設定を変更したら、有効にするためには Pandora FMS サーバを再起動する必要があります。
ほかには、エージェントのモジュールに、トラップを関連付ける手段もあります。例えば、トラップ受信で何らかのログファイルに “1” を書くようにし、それを読むモジュールを定義します。この方法により、想定したトラップを受信したときにモジュールの状態が変化するようになり、トラップの受信と関連付けることができます。
(OBSOLETE) 外部 SNMP トラップハンドラ
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
スクリーンショットで、どのようにアラートを作成するかがわかると思います。トラップの内容 (_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>
アプリケーションは何でも実現できカスタマイズ可能です。とても強力な構造になっています。多くのシステムでは、情報はテキストだけではなく数値でも取得できます。グラフを書きたい場合等では、数値情報のモジュールを利用します。なお、全てのデータは常に非同期であることに注意してください。
実例: トラップを用いた ESX のモニタリング
最も問題となりうるモニタリングの一つに、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つのステップとなります。
- ハンドラスクリプトを作成します。以下に示すスクリプトを参考にしてください。
- アラートコマンドを作成します。
- 上記のコマンドを使って、アラートアクションを作成します。必要に応じて適用先のエージェントを指定します。(複数の ESX がある場合は、それぞれ別のエージェントに適用したいような場合もあるかもしれません。)
- エンタープライズ 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: アラートコマンドの作成
ステップ 3: アラートアクションの作成
特定のエージェントのトラップの情報を送信するアクションを作成します。この場合、情報は WINN1247VSR というエージェントに送られます。上記のコマンドは、エージェント名をパラメータとして受け取り、(ESX バーチャルセンターの) 全ての情報を処理し、トラップからのデータを分割します。特に制限はなく、トラップで送られる全ての情報を処理します。
ステップ 4: SNMP アラートの作成
作成したアクションを使って、トラップのアラートを設定します。
ESX の全てのトラップを処理するために、ESX のトラップにマップする OID である .1.3.6.1.4.1.6876.4.3.301 を指定します。IP アドレスフィルタリングにより、それぞれの VirtualCenter のソース IP アドレスでフィルタリングすることもできます。