差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ja:documentation:pandorafms:monitoring:08_snmp_traps_monitoring [2024/02/21 08:51] – junichi | ja:documentation:pandorafms:monitoring:08_snmp_traps_monitoring [2024/05/17 23:11] (現在) – [複雑な SNMP トラップへのアラート関連付け] junichi | ||
---|---|---|---|
行 5: | 行 5: | ||
===== 概要 ===== | ===== 概要 ===== | ||
+ | |||
スイッチ、ルータ、サーバ、プリンタ、AP など、SNMP をサポートするネットワークデバイスは、インターフェイスの障害、CPU またはネットワークの負荷が高すぎたり、UPS の状態が変化したり、ディスクの障害が発生したときなどに、アラーム(SNMP トラップ)を送信することができます。各デバイスには、可能なイベントの独自のコレクションがあり、これは MIB と呼ばれます。この場合、デバイスのポーリングに使用する MIB とは異なります。 | スイッチ、ルータ、サーバ、プリンタ、AP など、SNMP をサポートするネットワークデバイスは、インターフェイスの障害、CPU またはネットワークの負荷が高すぎたり、UPS の状態が変化したり、ディスクの障害が発生したときなどに、アラーム(SNMP トラップ)を送信することができます。各デバイスには、可能なイベントの独自のコレクションがあり、これは MIB と呼ばれます。この場合、デバイスのポーリングに使用する MIB とは異なります。 | ||
行 12: | 行 13: | ||
トラップは、デバイスにて何かが発生した場合に非同期で送信されます。Pandora FMS には、モニタリング対象から送られてくるトラップを表示するトラップ受信コンソールがあり、また、トラップに対してアラートを設定することができます。SNMP トラップは、Pandora FMS の起動時に起動される、OS の SNMP サーバデーモンで受け取ります。このサーバは通常ログファイルを以下に保存します。 | トラップは、デバイスにて何かが発生した場合に非同期で送信されます。Pandora FMS には、モニタリング対象から送られてくるトラップを表示するトラップ受信コンソールがあり、また、トラップに対してアラートを設定することができます。SNMP トラップは、Pandora FMS の起動時に起動される、OS の SNMP サーバデーモンで受け取ります。このサーバは通常ログファイルを以下に保存します。 | ||
- | / | + | < |
- | トラップは、常に生データで受信されます。つまり、数値 OID で受信します。ただし、OS に MIB ファイルがインストールされている場合は、文字に変換することができます。エンタープライズ版の Pandora FMS の SNMP コンソールでは、トラップをより認識しやすいように、OID を数値や文字で表したり、何らかの説明をつけたりする (" | + | /var/log/pandora/ |
- | 最初に、SNMP コンソールを有効化するためには | + | </file> |
- | snmpconsole 1 | + | 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 ''/ | ||
+ | |||
+ | 最初に、SNMP コンソールを有効化するためには ''/ | ||
< | < | ||
+ | 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 文字列のいずれか)は、次のオプションも有効化します。 | ||
+ | |||
+ | < | ||
+ | |||
| | ||
| | ||
+ | |||
</ | </ | ||
- | また、/ | + | The ''/ |
- | 例: | + | |
+ | また、'' | ||
< | < | ||
| | ||
| | ||
+ | |||
</ | </ | ||
- | この設定では、コミュニティ | + | With this configuration, |
+ | |||
+ | この設定では、コミュニティ | ||
==== SNMPv3 ==== | ==== SNMPv3 ==== | ||
行 342: | 行 362: | ||
アップロードが完了すると、システムはそれをトラップライブラリに取り込みます。 | アップロードが完了すると、システムはそれをトラップライブラリに取り込みます。 | ||
- | ===== 複雑な | + | ===== SNMP トラップの |
- | This is an Enterprise feature and is configured in **Management** → **Setup** → **Setup** → **Enterprise** → **Forward SNMP traps to an agent (if it exists)**. | + | Menu <wrap :en>**Management → Setup → Setup → Enterprise → Forward SNMP traps to an agent (if it exists)**</ |
- | これは Enterprise 版の機能であり、**管理(Management)** → **セットアップ(Setup)** → **セットアップ(Setup)** → **Enterprise** → **SNMP トラップをエージェント (存在する場合) に転送(Forward SNMP traps to an agent (if it exists)** | + | **管理(Management)** → **セットアップ(Setup)** → **セットアップ(Setup)** → **Enterprise** → **SNMP トラップをエージェント (存在する場合) に転送(Forward SNMP traps to an agent (if it exists)**。 |
<WRAP center round info 60%> | <WRAP center round info 60%> | ||
行 406: | 行 426: | ||
With Pandora FMS it is possible to enable forwarding of SNMP traps to an external host by enabling the [[: | With Pandora FMS it is possible to enable forwarding of SNMP traps to an external host by enabling the [[: | ||
- | Pandora FMS では、Pandora 設定ファイルのトークン | + | Pandora FMS では、Pandora |
- | ===== SNMP trap 転送 ===== | ||
- | |||
- | Pandora FMS では、Pandora サーバの設定ファイルで[[: | ||
行 479: | 行 496: | ||
何らかの理由により、snmptrapd デーモンを Pandora FMS から独立して管理したい場合(Pandora FMS デーモンとは独立して停止・起動をしたい場合)は、いくつか考慮すべきことがあります。 | 何らかの理由により、snmptrapd デーモンを Pandora FMS から独立して管理したい場合(Pandora FMS デーモンとは独立して停止・起動をしたい場合)は、いくつか考慮すべきことがあります。 | ||
- | 1. The '' | + | 1. You must also activate |
- | 1. Pandora FMS サーバにおいて '' | + | 1. Pandora FMS サーバにおいて '' |
- | 2. Pandora FMS サーバで設定されるログは、snmptrapd を独立して管理する場合でも同じでなければいけません。 | + | 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 '' | ||
+ | |||
+ | 3. **snmptrapd** の呼び出しは特定のフォーマットである必要があり、**標準的なシステムからの呼び出しは利用できません** 。呼び出しは次のようにする必要があります(パラメータ '' | ||
- | 3. snmptrap の呼び出しは特定のフォーマットである必要があり、**標準的なシステムからの呼び出しは利用できません** 。呼び出しは次のようにする必要があります(パラメータ -A はとても重要です)。 | ||
< | < | ||
行 491: | 行 513: | ||
</ | </ | ||
+ | |||
+ | 4. You must configure the token in the server configuration file: | ||
4. snmptrapd トークンが、Pandora FMS 設定ファイル内に設定されている必要があります。 | 4. snmptrapd トークンが、Pandora FMS 設定ファイル内に設定されている必要があります。 | ||
行 501: | 行 525: | ||
5. この機能を有効化したら、次の手順を実施する必要があります。 | 5. この機能を有効化したら、次の手順を実施する必要があります。 | ||
- | * / | + | * Change the configuration in ''/ |
+ | * Stop the Pandora FMS server. | ||
+ | * End the **snmptrapd** process. | ||
+ | * Start up**snmptrapd** manually (with the format indicated above). | ||
+ | * Start the Pandora FMS server. | ||
+ | |||
+ | * '' | ||
* Pandora FMS サーバを停止 | * Pandora FMS サーバを停止 | ||
- | * snmptrapd プロセスが動作していないことを確認 (もし動いていたら、停止するまで待つか kill します) | + | |
- | * snmptrapd を手動で起動 (上記のフォーマットにて) | + | |
* Pandora FMS サーバを起動 | * Pandora FMS サーバを起動 | ||
- | |||
==== トラップログファイルの管理 ==== | ==== トラップログファイルの管理 ==== | ||
- | //pandora_snmptrap.log.index// および | + | |
+ | 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 '' | ||
+ | |||
+ | '' | ||
===== SNMP トラップバッファリング ===== | ===== SNMP トラップバッファリング ===== | ||
- | SNMPトラップが信頼できない接続を介して外部マネージャに送信されると、情報が失われます。Pandora FMS では、トラップをローカルの //snmptrapd// からの転送ではなく、信頼できる方法で Pandora FMS サーバに転送することができます。 | + | <WRAP center round important 60%> |
+ | |||
+ | 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. | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | |||
+ | 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 では、ローカル | ||
+ | |||
+ | **Prerequisites**: | ||
+ | |||
+ | **前提条件**: | ||
+ | |||
+ | * A local **snmptrapd** that is receiving traps. | ||
+ | * A local Pandora FMS agent. | ||
+ | * An installation of Pandora FMS. | ||
+ | |||
+ | * ローカルの **snmptrapd** がトラップを受信すること。 | ||
+ | * ローカルの Pandora FMS エージェントがあること。 | ||
+ | * Pandora FMS がインストールされていること。 | ||
+ | |||
+ | |||
==== アーキテクチャ ==== | ==== アーキテクチャ ==== | ||
行 525: | 行 586: | ||
* SNMP コンソールは、プレーンテキストファイルからトラップを処理します。 | * SNMP コンソールは、プレーンテキストファイルからトラップを処理します。 | ||
- | <WRAP center round important 60%> | ||
- | SNMPコンソールが // | ||
- | </ | ||
- | ==== 前提条件 ==== | ||
- | * ローカルの // | ||
- | * ローカルの Pandora FMS エージェントがあること。 | ||
- | * Pandora FMS がインストールされていること。 | ||
==== 設定 ==== | ==== 設定 ==== | ||
行 573: | 行 627: | ||
<WRAP center round important 60%> | <WRAP center round important 60%> | ||
- | //snmp_extlog// は、Pandora FMS サーバで書き込み可能な任意のファイルです。(同様に /// | + | |
+ | **snmp_extlog** には、Pandora FMS サーバが書き込むことができる任意のファイルを指定できますが、**snmp_logfile** | ||
</ | </ | ||
===== トラップジェネレータ ===== | ===== トラップジェネレータ ===== | ||
- | このツールは、SNMP コンソールから参照できるトラップを生成します。 | + | This tool allows you to generate custom |
- | {{ : | + | このツールを使用すると、後で SNMP コンソールで表示できるカスタム SNMP トラップを生成できます。 これには、メニュー **操作(Operation)** → **SNMP** → **SNMP トラップジェネレータ(SNMP trap generator)** からアクセスできます。 |
+ | In **SNMP Type** choose an SNMP type from the following options: | ||
- | トラップジェネレータを正しく設定するには、次のフィールドを入力する必要があります。 | + | **SNMP |
- | **ホストアドレス(Host Address)** | + | * **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 | ||
+ | * **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. | ||
- | トラップ送信先 IP アドレス。 | + | * **Cold Start**: エージェントが開始または再開されたことを意味します。 |
- | + | | |
- | **コミュニティ(Community)** | + | |
- | + | | |
- | トラップジェネレータでアクセスするときの SNMP コミュニティ。 | + | |
- | + | | |
- | **エンタープライズ文字列(Enterprise String)** | + | |
- | + | ||
- | トラップの OID です。例: | + | |
- | + | ||
- | **値(Value)** | + | |
- | + | ||
- | トラップで送信するデータであり、値です。 | + | |
- | + | ||
- | **SNMP エージェント(SNMP Agent)** | + | |
- | + | ||
- | トラップをシミュレートするエージェントです。 | + | |
- | + | ||
- | **SNMP タイプ (SNMP Type)** | + | |
- | + | ||
- | 以下から SNMP タイプを選択します。 | + | |
- | + | ||
- | * **Cold Start**: エージェントが開始または再開されたことを意味します。 | + | |
- | * **Warm Start**: エージェント設定が変更されたことを意味します。 | + | |
- | * **Link down**: 通信インタフェースが利用できない状態になった(無効化)ことを意味します。 | + | |
- | * **Linu up**: 通信インタフェースが利用できる状態になったことを意味します。 | + | |
- | * **Authentication failure**: エージェントが(コミュニティによって)認証できない NMS を受信したことを意味します。 | + | |
- | * **EGP neighbor loss**: ルータが EGP プロトコルを使用しているシステムで、近くのホストが利用できない状態になったことを示します。 | + | |
- | * **Enterprise**: | + | |
[[ja: | [[ja: | ||
行 648: | 行 689: | ||
ほかには、エージェントのモジュールに、トラップを関連付ける手段もあります。例えば、トラップ受信で何らかのログファイルに " | ほかには、エージェントのモジュールに、トラップを関連付ける手段もあります。例えば、トラップ受信で何らかのログファイルに " | ||
+ | |||
+ | ===== (OBSOLETE) 外部 SNMP トラップハンドラ ===== | ||
+ | |||
+ | SNMP コンソールは、トラップを取得する目的のためだけに作られています。トラップは個々のアイテムとしてのみ処理されます。 1つのトラップは多くの情報を含むことができます。 | ||
+ | 場合によっては、実行できる唯一の監視がトラップに基づいている場合があります。 そのために、取得した 1つのトラップの情報をプラグインとして動作する外部スクリプトで後処理することができます。 | ||
+ | |||
+ | トラップの詳細データを処理するために、アラートの結果としてトラップのすべてのデータをスクリプトへ渡すことができます。以下に例を示します。これは、Pandora の SNMP コンソールログで見ることができるトラップビューです。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 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 | ||
+ | </ | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | |||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | |||
+ | |||
+ | スクリーンショットで、どのようにアラートを作成するかがわかると思います。トラップの内容 (_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ファイルを作成し、'/ | ||
+ | |||
+ | * オリジナルIPアドレス | ||
+ | * メインイベント (コールドスタート) | ||
+ | * 2つ目のイベント(説明): | ||
+ | |||
+ | これらのデータをパースするスクリプトを作る場合、例えば " | ||
+ | 例えば、snmp_gateway.31415.data です。 | ||
+ | |||
+ | 生成した XML ファイルは次のようになります。 | ||
+ | |||
+ | < | ||
+ | <?xml version=' | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | アプリケーションは何でも実現できカスタマイズ可能です。とても強力な構造になっています。多くのシステムでは、情報はテキストだけではなく数値でも取得できます。グラフを書きたい場合等では、数値情報のモジュールを利用します。なお、全てのデータは常に非同期であることに注意してください。 | ||
+ | |||
+ | ==== 実例: トラップを用いた ESX のモニタリング ==== | ||
+ | |||
+ | 最も問題となりうるモニタリングの一つに、VMware ESX のようにバージョンによって情報の収集方法が異なるベンダが提供のシステムがあります。この章では、外部 SNMP トラップハンドラを使って、ESX システムをモニタする方法を説明します。 | ||
+ | |||
+ | ESX のトラップは次のようになっています。 | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | cpu usage - Metric Usage = 1%" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | | ||
+ | | ||
+ | | ||
+ | </ | ||
+ | |||
+ | |||
+ | 見ての通り、トラップに CPU、ディスク、メモリ の情報がまとめられています。トラップの内容を分析し、XML ファイルを作成する小さなスクリプトを書き、トラップハンドラにすることを考えます。トラップハンドラの書き方は共通です。手順は 4つのステップとなります。 | ||
+ | |||
+ | - ハンドラスクリプトを作成します。以下に示すスクリプトを参考にしてください。 | ||
+ | - アラートコマンドを作成します。 | ||
+ | - 上記のコマンドを使って、アラートアクションを作成します。必要に応じて適用先のエージェントを指定します。(複数の ESX がある場合は、それぞれ別のエージェントに適用したいような場合もあるかもしれません。) | ||
+ | - エンタープライズ OID (この手法でモニタする全トラップのもの) および発信元 IP アドレスにマップする SNMP トラップアラートを作成します。 | ||
+ | |||
+ | では、トラップハンドラを作成する、最初のステップを見てみましょう。 | ||
+ | |||
+ | === トラップハンドラ: | ||
+ | |||
+ | < | ||
+ | # | ||
+ | # (c) Sancho Lerena 2010 < | ||
+ | # Specific Pandora FMS trap collector for ESX | ||
+ | |||
+ | use POSIX qw(setsid strftime); | ||
+ | |||
+ | sub show_help { | ||
+ | print " | ||
+ | print "(c) Sancho Lerena 2010 < | ||
+ | print " | ||
+ | print " | ||
+ | exit; | ||
+ | } | ||
+ | |||
+ | sub writexml { | ||
+ | my ($hostname, $xmlmessage ) = @_; | ||
+ | my $file = "/ | ||
+ | |||
+ | open (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 (" | ||
+ | my $xmldata = "< | ||
+ | |||
+ | if ($chunk =~ m/ | ||
+ | $hostname = " | ||
+ | } | ||
+ | |||
+ | if ($chunk =~ m/Host cpu usage \- Metric Usage \= ([0-9]*)\z/ | ||
+ | $value = $1; | ||
+ | $module_name = " | ||
+ | } | ||
+ | |||
+ | if ($chunk =~ m/Host memory usage \- Metric Usage = ([0-9\.]*)\z/ | ||
+ | $value = $1; | ||
+ | $module_name = " | ||
+ | } | ||
+ | |||
+ | if ($chunk =~ m/Datastore usage on disk \- Metric Storage space actually used \= ([0-9\.]*)\z/ | ||
+ | $value = $1; | ||
+ | $module_name = " | ||
+ | } | ||
+ | |||
+ | $xmldata .= "< | ||
+ | |||
+ | $xmldata .= "</ | ||
+ | writexml ($target_host, | ||
+ | </ | ||
+ | |||
+ | |||
+ | === ステップ 2: アラートコマンドの作成 === | ||
+ | |||
+ | この例では、コマンドスクリプトを /tmp に置いています。(実際には、より安全な場所に置いてください。) そして、それに実行権限を与えます。(chmod 755) | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | |||
+ | == ステップ 3: アラートアクションの作成 == | ||
+ | 特定のエージェントのトラップの情報を送信するアクションを作成します。この場合、情報は WINN1247VSR というエージェントに送られます。上記のコマンドは、エージェント名をパラメータとして受け取り、(ESX バーチャルセンターの) 全ての情報を処理し、トラップからのデータを分割します。特に制限はなく、トラップで送られる全ての情報を処理します。 | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | |||
+ | === ステップ 4: SNMP アラートの作成 === | ||
+ | |||
+ | 作成したアクションを使って、トラップのアラートを設定します。 | ||
+ | |||
+ | {{ wiki: | ||
+ | |||
+ | |||
+ | |||
+ | ESX の全てのトラップを処理するために、ESX のトラップにマップする OID である .1.3.6.1.4.1.6876.4.3.301 を指定します。IP アドレスフィルタリングにより、それぞれの VirtualCenter のソース IP アドレスでフィルタリングすることもできます。 | ||
+ | |||
+ | === データの表示 === | ||
+ | |||
+ | 以下に情報の参照例を示します。これにより、通常のモジュールとして管理できます。 | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||