差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ja:documentation:03_monitoring:08_snmp_traps_monitoring [2021/07/03 23:34] – [SNMP v3 を使った trap 転送設定例] junichi | ja:documentation:03_monitoring:08_snmp_traps_monitoring [Unknown date] (現在) – 削除 - 外部編集 (Unknown date) 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== SNMP トラップモニタリング ====== | ||
- | {{indexmenu_n> | ||
- | |||
- | [[ja: | ||
- | |||
- | ===== SNMP トラップの操作 ===== | ||
- | |||
- | ==== 概要 ==== | ||
- | スイッチ、ルータ、サーバ、プリンタ、AP など、SNMP をサポートするネットワークデバイスは、インターフェイスの障害、CPU またはネットワークの負荷が高すぎたり、UPS の状態が変化したり、ディスクの障害が発生したときなどに、アラーム(SNMP トラップ)を送信することができます。各デバイスには、可能なイベントの独自のコレクションがあり、これは MIB と呼ばれます。この場合、デバイスのポーリングに使用する MIB とは異なります。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | トラップは、デバイスにて何かが発生した場合に非同期で送信されます。Pandora FMS には、モニタリング対象から送られてくるトラップを表示するトラップ受信コンソールがあり、また、トラップに対してアラートを設定することができます。SNMP トラップは、Pandora FMS の起動時に起動される、OS の SNMP サーバデーモンで受け取ります。このサーバは通常ログファイルを以下に保存します。 | ||
- | |||
- | / | ||
- | |||
- | トラップは、常に生データで受信されます。つまり、数値 OID で受信します。ただし、OS に MIB ファイルがインストールされている場合は、文字に変換することができます。エンタープライズ版の Pandora FMS の SNMP コンソールでは、トラップをより認識しやすいように、OID を数値や文字で表したり、何らかの説明をつけたりする (" | ||
- | |||
- | 最初に、SNMP コンソールを有効化するためには / | ||
- | |||
- | snmpconsole 1 | ||
- | |||
- | トラップを文字列変換したい場合(変数のバインディングまたは Enterprise 文字列のいずれか)は、次のオプションも有効化します(Enterpriase 版のみ)。 | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | また、/ | ||
- | 例: | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | この設定では、コミュニティ " | ||
- | |||
- | === SNMPv3 === | ||
- | SNMPv3 トラップは、送信ユーザが [[http:// | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | <WRAP center round important 60%> | ||
- | engineID は、// | ||
- | </ | ||
- | |||
- | ==== トラップ受信コンソールへのアクセス ==== | ||
- | トラップコンソールへアクセスするには、**モニタリング(Monitoring) > SNMP > SNMP コンソール(SNMP Console)** をクリックします。受信したトラップ一覧が表示されます。全トラップ情報を表示することができるアイコン(目)があります。ここで、SNMP トラップの詳細を見ることができます。 | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | それぞれのトラップで、次のカラムが表示されます。 | ||
- | |||
- | **状態(Status)** | ||
- | |||
- | 承諾されたトラップは緑の四角で、そうでないものが赤の四角です。 | ||
- | |||
- | **SNMPエージェント(SNMP Agent)** | ||
- | |||
- | トラップを送信したエージェントです。 | ||
- | |||
- | **OID** | ||
- | |||
- | トラップの OID です。トラップは、このフィールドでは 1つのデータのみ送信できます。 | ||
- | |||
- | **値(Value)** | ||
- | |||
- | トラップの値です。トラップは、このフィールドでは 1つのデータのみ送信できます。 | ||
- | |||
- | **カスタム OID (Custom OID), カスタム値 (Custom Value)** | ||
- | |||
- | トラップで送信されるカスタムフィールドです。これは、トラップを送るデバイスに依存した特別なロジックで複雑なデータになることがあります。トラップはこのフィールドを使って複数のデータを送ることができます。 | ||
- | |||
- | **タイムスタンプ(Time Stamp)** | ||
- | |||
- | トラップを受信した時間です。 | ||
- | |||
- | **アラート(Alert)** | ||
- | |||
- | アラート通知をしたトラップは黄色、そうでないものはグレーです。 | ||
- | |||
- | **アクション(Action)** | ||
- | |||
- | トラップを削除したり承諾するフィールドです。 | ||
- | |||
- | トラップのタイプによって異なる色で表示されます。 | ||
- | |||
- | * **青:** メンテナンストラップ | ||
- | * **紫:** 情報トラップ | ||
- | * **緑:** 正常トラップ | ||
- | * **黄:** 警告トラップ | ||
- | * **赤:** 障害トラップ | ||
- | |||
- | トラップコンソールの上部に、' | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | === トラップの承諾 === | ||
- | 効果的にトラップを管理するために、トラップを承諾する操作が可能です。これにより、管理者は、すでに確認したトラップであるのか、そうでないのかを識別することができます。 | ||
- | |||
- | トラップを承諾するためには、トラップの右にある緑の丸いボタンをクリックします。複数のトラップをマークして " | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | === トラップの削除 === | ||
- | 個別に、または複数の選択と「削除」アクションによって、編集後のトラップを削除することができます。 トラップが蓄積されないようにするため、10日以上経過したトラップを自動的に削除するデフォルト設定オプションがあります。 | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | ==== SNMP トラップアラート ==== | ||
- | === 概要 === | ||
- | Pandora FMS には、受信する SNMP トラップのアラートシステムもあります。 それらは主にフィルタリングルールに基づいており、アラートを発報するように設定したルールに従って、すべてのフィールドで条件に一致するものを検索します。 この章を読む前に、Pandora のアラートに関しても確認してください。[[http:// | ||
- | |||
- | === アラートの追加 === | ||
- | SNMP トラップアラートには、コンソールで受信した SNMP トラップがアラート条件にマッチするかを検索するために使用されるいくつかのフィールドがあります。 オプションで、必要に応じて、より一般的なルールやより具体的なルールを作成するフィールドを使用することができます。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | * **説明(Description)**: | ||
- | |||
- | * **Enterprise 文字列(Enterprise String)**: トラップのメイン OID です。 文字列を検索します。 たとえば、OID の一部を検索するならば、1.21.34.2.3 という表現が利用でき、それを含むすべての OID をフィルタリングすることができます。同様に、*1.21.34.2.3.* も可能です。ただし、* 文字を使用する必要はありません。 | ||
- | |||
- | * **カスタム値/ | ||
- | |||
- | * **SNMP エージェント(SNMP Agent)**: | ||
- | |||
- | * **トラップタイプ(Trap type)**: Cold Start, Warm start, Link down, Link up, Authentication failuer, other などのトラップタイプによるフィルタです。何も指定しなければ、トラップは通常 " | ||
- | |||
- | * **単一値(Single value)**: トラップの値によるフィルタです。この例では、.666 で、MAIN OID の値のみ参照し、カスタムデータの追加 OID は参照しないことに注意してください。 | ||
- | |||
- | * **バインド変数/ | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | * **フィールド1(Field 1)**: アラートのコマンドパラメータに指定するフィールド1です。このフィールドは、イベントの生成を選択した場合に使用されるか、メールアクションを選択した場合の宛先に使われます(アクションのデフォルトのメールの宛先を上書きする場合)。 アクション/ | ||
- | |||
- | * **フィールド2(Field 2)**: アラートのコマンドパラメータに指定するフィールド2です。例えば、電子メールを送信する場合は件名の対象になります。 空白のままにするとアクションで定義した内容が使用されます。 | ||
- | |||
- | * **フィールド3(Field 3)**: アラートのコマンドパラメータに指定するフィールド3です。例えば、電子メールを送信する場合は本文の対象になります。 空白のままにするとアクションで定義した内容が使用されます。 | ||
- | |||
- | * **最小アラート数(Min. Number of Alerts)**: アラートを発生させるトラップの最小数を指定します。 | ||
- | |||
- | * **最大アラート数(Max. Number of Alerts)**: 指定された間隔(または時間しきい値)でアクションが実行される最大回数を指定します。 | ||
- | |||
- | * **再通知間隔(Time Threshold)**: | ||
- | |||
- | * **優先度(Priority)**: | ||
- | |||
- | * **アラートアクション(Alert Action)**: アラート実行時のアクションを選択します。イベントを選択すると、通常のアラート作成イベントは生成されません。 | ||
- | |||
- | * **位置(Position)**: | ||
- | |||
- | === アラートフィールドマクロ === | ||
- | アラート // | ||
- | |||
- | * **_data_:** トラップ全体 | ||
- | * **_agent_: | ||
- | * **_address_: | ||
- | * **_timestamp_: | ||
- | * **_snmp_oid_: | ||
- | * **_snmp_value_: | ||
- | |||
- | === トラップアラートの例 === | ||
- | 次のようなトラップを受信したと仮定します。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | この場合、CPUオーバーヒートメッセージを含む可能性のあるトラップを識別するメインOID(1.3.6.1.4.1.2789.2005)がありますが(それ以外のものはわかりませんが)、1 と 2 の 2つの変数でその時の CPU のヒート状態と温度を表しています。 CPU のオーバーヒートトラップだけを識別したいので、トラップの最初の変数のヒートアラート文字列にマッチさせます(検索には最大20個まで設定できます)。 | ||
- | |||
- | トラップの最初の部分を定義するのは簡単です。最初の最も重要なプレフィルタを作成するために、メイン OID のみを使用します。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | トラップ定義の 2番目は、必須部分を含みます。 トラップの最初の変数で "Heat alert" という文字列を探しますが、トラップをメインの OID で受信すると変数にはテキスト文字列が含まれていないため、アラートは発報されません。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | 最後に、" | ||
- | |||
- | {{ wiki: | ||
- | |||
- | アラートがオフになると、生成されるイベントは次のようになります。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ==== 大量のトラップがある環境での動作 ==== | ||
- | === トラップストーム保護 === | ||
- | 同一の発信元から来るトラップストームからシステムを守るために利用する 2つのサーバパラメータがあります。これは、// | ||
- | |||
- | * **snmp_storm_protection**: | ||
- | * **snmp_storm_timeout**: | ||
- | * **snmp_storm_silence_period**: | ||
- | |||
- | この保護が行われると、コンソールのイベントに反映されます。 | ||
- | |||
- | {{ wiki:Storm silence snmp.png? | ||
- | |||
- | トラップストーム保護は、トラップフィルタリングと合わせて、1日に何百、何千ものトラップを受け取っている場合に、不要なトラップを排除し一部のトラップのみを扱うことができます。 | ||
- | |||
- | === サーバにおけるトラップフィルタリング === | ||
- | あるシステムでは多数のトラップが受信されますが、監視に必要なのはわずかな割合でしかありません。 Pandora FMS では、アプリケーションの不要な読み込みを避けるために、サーバが受け取るトラップをフィルタリングすることが可能です。**モニタリング(Monitoring)** > **SNMP**> | ||
- | |||
- | {{ wiki: | ||
- | |||
- | **+** を使用して、説明と必要な数のフィルタを追加します。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | SNMP ログ(デフォルトは /// | ||
- | |||
- | %4y-%02.2m-%l[**]%02.2h: | ||
- | |||
- | それぞれ次の意味です。 | ||
- | |||
- | * %y: 現在の年。 | ||
- | * %m: 現在の月。(数値) | ||
- | * %l: 現在の月における日付。 | ||
- | * %h: 現在の時間。 | ||
- | * %j: 現在の分。 | ||
- | * %k: 現在の秒。 | ||
- | * %a: 発信元アドレス。(トラップバージョン 1 のみ) | ||
- | * %N: OID。 | ||
- | * %w: トラップタイプ。(数値) | ||
- | * %W: トラップの説明。 | ||
- | * %q: トラップのサブタイプ。(数値) | ||
- | * %v: タブで区切られた値のリスト。(カスタム OID) | ||
- | |||
- | 例えば、192.168.50.20 からのすべてのトラップをフィルタするには、次のフィルタ設定をします。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | 複数のフィルタを同時に作成できるため、検索ではすべてのフィルタリング条件を満たすトラップが対象となります。 | ||
- | |||
- | === SNMP トラップ統計 === | ||
- | このビューでは、トラップの統計情報を発信元(IP)と OID の両方で見ることができます。これにより、より多くのトラップを生成する IP とより多く繰り返す OID を特定し、フィルタの効果的な管理が可能になります。 過去 30日間のトラップ統計が表示されます。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | ==== トラップのカスタマイズ ==== | ||
- | <WRAP center round tip 60%> | ||
- | {{wiki: | ||
- | </ | ||
- | |||
- | モニタ対象デバイスから送られるトラップをオペレータがわかりやすくするために、Pandora FMS にベンダー MIB をロードしたり、トラップを編集することができます。 | ||
- | |||
- | === トラップのリネーム/ | ||
- | コンソールのトラップの部分に " | ||
- | |||
- | {{ wiki: | ||
- | |||
- | カスタマイズしたいトラップの編集アイコンをクリックします。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | 次のようなウインドウが表示されます。 | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | これにより、OID " | ||
- | |||
- | カスタムOID には、変数バインディング文字列に部分マッチさせる Perl 互換の正規表現を記述します。一般的にはカスタムOID を使ったトラップの変換は必要ありません。 | ||
- | |||
- | <WRAP center round important 60%> | ||
- | カスタムOIDに記述可能な文字数には制限があるため、この制限を超える可能性のある変数バインディング文字列全体ではなく、一部の変数にマッチするような正規表現を使用して下さい。 | ||
- | </ | ||
- | |||
- | 古いトラップは変更されないことに注意してください。この機能は、有効にした時点以降新たに受信したトラップに対してのみ有効です。 | ||
- | |||
- | 最終的に、ユーザ定義トラップは次のようになります。 | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | === ベンダー MIB のロード === | ||
- | このオプションによりトラップの MIB をアップロードすることができ、Pandora の内部変換データベースに展開されます。トラップを受信すると自動的に文字列に変換します。**モニタリング(Monitoring)** > **SNMP** > **MIBアップローダ(MiB uploader)** へ行きます。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | ベンダー MIB をアップロードするには、**ファイルアップロード(Upload file(s))** をクリックしてファイルを選択し、**Go** をクリックします。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | アップロードが完了すると、システムはそれをトラップライブラリに取り込みます。 | ||
- | |||
- | ==== 複雑な SNMP トラップへのアラート関連付け ==== | ||
- | 前述のアラートは、トラップが適切に定義されている場合にのみ使用されます。復旧通知のための関連データはありません。 | ||
- | |||
- | しかしながら、いくつかの場合、次のような構造のトラップが見られます。 | ||
- | |||
- | < | ||
- | OID: .1.3.6.1.4.1.2789.2005 | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | これは " | ||
- | |||
- | このトラップは、トラップコンソールでは次のように表示されます。 | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | 拡張情報 (Custom data) を見てみると、いくつかの有用なデータが含まれています。インスタンスでは、OID が 2005.1 で終わっている最初のフィールドは、識別子のように見えます。OID が 2005.3 で終わっている 3つ目のフィールドは、エラーメッセージのように見えます。フィールド 2 と 4 は、我々にとって不明なコードであり、使い道が無さそうです。 | ||
- | |||
- | トラップのテキストデータの特定の部分を使って、トラップからイベントを生成できるということを考えてみましょう。次のような情報を含むイベントを生成したいと仮定します。 | ||
- | |||
- | Chassis Alert: <error message> in device < | ||
- | |||
- | 取得したデータにマッチさせてアラートを生成し、またデータを使ってアラート内のメッセージを生成します。 | ||
- | Pandora FMS では、セレクタを用いて、高度な正規表現にて実現することができます。正規表現に関する詳細はこちらを参照してください。 | ||
- | [[http:// | ||
- | |||
- | () を使ったセレクタでは、検索の表現を使って情報のコピーができます。 | ||
- | |||
- | 識別子を取得するための正規表現は次のようになります。 | ||
- | |||
- | .*.1.3.6.1.4.1.2789.2005.1 \= STRING\: \" | ||
- | |||
- | エラーメッセージを取得するための正規表現はつぎのようになります。 | ||
- | |||
- | .*.1.3.6.1.4.1.2789.2005.3 \= STRING\: \" | ||
- | |||
- | データフィールドを取得したら、それをアラートで利用する必要があります。この目的のためには、特別なマクロ _snmp_f1_、 _snmp_f2_ および _snmp_f3_ を利用します。これらのマクロは、SNMP トラップアラート以外では無視されます。 | ||
- | |||
- | メッセージを生成するために、次のような文字列を使います。 | ||
- | |||
- | Chassis Alert: _snmp_f2_ in device _snmp_f1_ | ||
- | |||
- | 以下の画像は、作成したアラートを表示しています。 | ||
- | |||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | |||
- | この種類のアラートをうまく作成するためには、正規表現の知識が必要です。不正な場所にスペースや記号、その他文字が入っていたりすると、正しく動作しません。**SNMP アラートでは、正規表現を利用している意味を常に意識してください。** 正規表現を使って簡単にアラートを生成するには、次のようにします。 | ||
- | |||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | |||
- | === 追加の例 === | ||
- | 別の例です。特定のトラップで受信するインタフェース名に関する情報を送信するメールアラートを利用します。トラップ受信時に、デバイス名、IP およびインタフェース名をメール送信します。 | ||
- | |||
- | 以下は、スイッチから受信したトラップです。 | ||
- | |||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | |||
- | これは、受信したメールです。 | ||
- | |||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | |||
- | |||
- | 以下がトラップの設定です。 | ||
- | |||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | |||
- | ==== Pandora アラートとトラップの関係 / SNMP エージェントのトラップ転送 ==== | ||
- | トラップに定義されたアラートは、Pandora のアラートエンジンとは完全に独立しています。そのために、" | ||
- | |||
- | |||
- | //SNMP コンソールからフォワードされたトラップを含む、特殊な SNMP トラップモジュール//: | ||
- | |||
- | {{ wiki: | ||
- | |||
- | これを解決するために、" | ||
- | |||
- | テキストのアラートは、通常のモジュールにおける標準的な方法で定義できます。これにより、別の発信元からのトラップを、それぞれ別のモジュールで扱うための SNMP モニタリングのカスタマイズが可能です。それにより、アラートの設定もそれぞれ可能になります。 | ||
- | |||
- | |||
- | // | ||
- | |||
- | {{wiki: | ||
- | |||
- | |||
- | これは、// | ||
- | |||
- | |||
- | // | ||
- | {{ wiki: | ||
- | |||
- | 設定を変更したら、有効にするためには Pandora FMS サーバを再起動する必要があります。 | ||
- | |||
- | ほかには、エージェントのモジュールに、トラップを関連付ける手段もあります。例えば、トラップ受信で何らかのログファイルに " | ||
- | |||
- | ==== 外部 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 アドレスでフィルタリングすることもできます。 | ||
- | |||
- | == データの表示 == | ||
- | 以下に情報の参照例を示します。これにより、通常のモジュールとして管理できます。 | ||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | |||
- | ==== SNMP trap 転送 ==== | ||
- | |||
- | Pandora FMS では、Pandora サーバの設定ファイルで[[: | ||
- | |||
- | |||
- | === SNMP v1 を使った trap 転送設定例 === | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | === SNMP v2c を使った trap 転送設定例 === | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | </ | ||
- | |||
- | === SNMP v3 を使った trap 転送設定例 === | ||
- | |||
- | この例は、SNMP v3 trap の知識が必要になるため特に難しいです。リモートの SNMP エージェントが[[: | ||
- | < | ||
- | |||
- | createUser -e 0x0102030405 myuser MD5 mypassword DES myotherpassword | ||
- | |||
- | </ | ||
- | |||
- | Pandora サーバの設定ファイルは次のようになります。 | ||
- | |||
- | < | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | | ||
- | |||
- | </ | ||
- | |||
- | より詳細は、 [[http:// | ||
- | |||
- | |||
- | ==== snmptrapd デーモンの個別管理 ==== | ||
- | 何らかの理由により、snmptrapd デーモンを Pandora FMS から独立して管理したい場合(Pandora FMS デーモンとは独立して停止・起動をしたい場合)は、いくつか考慮すべきことがあります。 | ||
- | |||
- | 1. snmpconsole パラメータは、Pandora FMS サーバに必須です。 | ||
- | |||
- | 2. Pandora FMS サーバで設定されるログは、snmptrapd を独立して管理する場合でも同じでなければいけません。 | ||
- | |||
- | 3. snmptrap の呼び出しは特定のフォーマットである必要があり、**標準的なシステムからの呼び出しは利用できません**。呼び出しは次のようにする必要があります(パラメータ -A はとても重要です)。 | ||
- | |||
- | / | ||
- | |||
- | 4. snmptrapd トークンが、Pandora FMS 設定ファイル内に設定されている必要があります。 | ||
- | |||
- | snmp_trapd manual | ||
- | |||
- | 5. この機能を有効化したら、次の手順を実施する必要があります。 | ||
- | |||
- | * / | ||
- | * Pandora FMS サーバを停止 | ||
- | * snmptrapd プロセスが動作していないことを確認 (もし動いていたら、停止するまで待つか kill します) | ||
- | * snmptrapd を手動で起動 (上記のフォーマットにて) | ||
- | * Pandora FMS サーバを起動 | ||
- | |||
- | === トラップログファイルの管理 === | ||
- | // | ||
- | |||
- | ==== SNMP トラップバッファリング ==== | ||
- | SNMPトラップが信頼できない接続を介して外部マネージャに送信されると、情報が失われます。Pandora FMS では、トラップをローカルの // | ||
- | |||
- | === アーキテクチャ === | ||
- | |||
- | {{ wiki: Remote snmp trap schema.jpg }} | ||
- | |||
- | |||
- | * SNMP エージェントは、ローカルの // | ||
- | * ローカルの Pandora FMS エージェントが // | ||
- | * データサーバは、XML データファイルからトラップを読み込み、プレーンテキストファイルに展開します。 | ||
- | * SNMP コンソールは、プレーンテキストファイルからトラップを処理します。 | ||
- | |||
- | <WRAP center round important 60%> | ||
- | SNMPコンソールが // | ||
- | </ | ||
- | |||
- | === 前提条件 === | ||
- | * ローカルの // | ||
- | * ローカルの Pandora FMS エージェントがあること。 | ||
- | * Pandora FMS がインストールされていること。 | ||
- | |||
- | === 設定 === | ||
- | == snmptrapd == | ||
- | /// | ||
- | |||
- | < | ||
- | [snmp] logOption f / | ||
- | format1 SNMPv1[**]%4y-%02.2m-%l[**]%02.2h: | ||
- | format2 SNMPv2[**]%4y-%02.2m-%l[**]%02.2h: | ||
- | </ | ||
- | |||
- | == Pandora FMS エージェント == | ||
- | // | ||
- | |||
- | ローカルのエージェント設定ファイル /// | ||
- | |||
- | module_plugin grep_snmptrapd / | ||
- | |||
- | == Pandora FMS サーバ == | ||
- | SNMP コンソールが、データサーバにて書かれた外部ログファイルからトラップを処理するよに設定する必要があります。 | ||
- | |||
- | サーバ設定ファイル /// | ||
- | |||
- | * SNMP コンソールが有効であるか確認します。 | ||
- | |||
- | snmpconsole 1 | ||
- | |||
- | * データサーバが有効であるか確認します。 | ||
- | |||
- | dataserver 1 | ||
- | |||
- | * 外部 SNMP ログファイルを設定します。存在しない場合は、SNMP コンソールが作成します。 | ||
- | |||
- | snmp_extlog / | ||
- | |||
- | <WRAP center round important 60%> | ||
- | // | ||
- | </ | ||
- | |||
- | ==== トラップジェネレータ ==== | ||
- | このツールは、SNMP コンソールから参照できるトラップを生成します。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | |||
- | トラップジェネレータを正しく設定するには、次のフィールドを入力する必要があります。 | ||
- | |||
- | * **ホストアドレス(Host Address)**: トラップ送信先 IP アドレス。 | ||
- | * **コミュニティ(Community)**: | ||
- | * **エンタープライズ文字列(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: | ||