Pandora: Documentation ja: Remote Monitoring

From Pandora FMS Wiki
Revision as of 13:26, 21 August 2012 by Junichi (talk | contribs) (5.0 からのプラグインを使ったモニタリング)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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

1 リモートモニタリング

1.1 概要

Pandora FMS ネットワークサーバは、集中的にリモートからテストを実行することができる重要な要素です。データサーバとは逆に、ネットワークサーバは複数のプロセスキューを通してタスクを実行します。ネットワークサーバはまた、他のネットワークサーバと共にバランシング動作をしたり、他のネットワークサーバがダウンした時に、そのサーバと同等の処理を実行する代替えとして動作することができます。Pandora における HA の詳細については、それに関する章を参照してください。

ネットワークサーバは、それに割り当てられたモジュールのみと動作します。もちろん、ネットワークテストなので、ネットワークサーバはテストをする対象がネットワーク的に通信できないといけません (IPアドレスやポート)。対象システムのポートが開いて無かったりルーティングがない場合は、モニタできません。ファイアーウォールの存在やネットワークのルーティングに関しては、Pandora FMS では何ともできません。これらの理由により発生する問題は、Pandora FMS の特別な設定で解決するわけでもありません。

1.2 リモートネットワークモジュール

Pandora FMS のネットワークモジュールは、リモートモニタリングタスクを実行します。リモートで実行するタスクは、次の 3つに分類されます。

ICMP テスト

Ping に答えるか (remote_icmp_proc) または、ミリ秒での応答があるか (remote_icmp) どうかをテストします。両方のテストは、ネットワークモジュールが割り当てられたエージェントに対して、ネットワークサーバで実行されます。

TCP テスト

モジュールで設定された TCP ポートが開いているかをリモートからチェックします。加えて、テキスト文字列を送ることもできます ("^M" は、改行を意味します)。また、通信が正しいかどうかをチェックするために、応答文字列を確認することもできます。これによりプロトコルチェックの実装が簡単にできます。例えば、GET / HTTP/1.0^M^M という文字列を送信し、200 OK を受信することでウェブサーバが生きているかどうかをチェックできます。

SNMP テスト

SNMP が有効になっていて、インタフェースの状態やネットワークトラフィックなどの状態を取得できるるようになっている場合、リモートから SNMP ポーリングを行うことができます。 詳細は、Pandora FMS での SNMP の説明を参照ください (以降にあります)。

Pandora 1.3 Network&DataServer Arch.png

まとめると、ネットワークサーバは、それぞれのエージェントに割り当てられた異なるネットワークテストを実行します。それぞれのエージェントはネットワークサーバに割り当てられ、実行結果は Pandora FMS システムのデータベースに保存されます。

1.3 ネットワークモニタリングのための一般的なモジュールの設定

リモートからサービス (FTP、SSH など) をモニタするためには、最初にサービスをモニタするための通信を行うエージェントを作成します。

Pandora FMS コンソールにて、管理メニューの エージェント管理 を使います。

Anvi.jpg

次の画面で、エージェントの作成 ボタンをクリックします。

Bibi.jpg

新しいエージェントの情報を入力して、エージェントの作成 をクリックします。

Raro.jpg

エージェントを作成したあと、上のプルダウンメニューからモジュールを選択します。ここで、「ネットワークサーバモジュールの新規作成」を選択し、作成 ボタンを押します。

Sasa.jpg

以下のフォームで、ネットワークコンポーネントモジュールを選択し、右側のドロップダウンメニューで必要なチェックを見つけます。この例では、Host Alive (ping 疎通確認) を選択しています。これはマシンがネットワークに接続されているかどうかを確認するために、ping 応答をチェックします。

Alive.jpg

拡張オプションはのちほど説明します。モジュールは、エージェントの IP アドレスを取得しています。変更もできます。モジュールの定義が完了したら、作成(Create)ボタンをクリックしてください。

以下の画面では、エージェントのモジュールが表示されています。Keepalive エージェントが作成されたときにあらかじめ定義されるモジュールで、Hoat Alive は追加したモジュールです。

Kiji.jpg

見ての通り、モジュールでワーニングが出ています。ワーニングは、モジュールが追加されたばかりで、まだデータを受信していないということを意味しています。一度データを受信すると、ワーニングは消えます。

作成したモジュールのデータを見るには、上の方にある参照メニューをクリックします。収集した情報が表示されます。

Keso.jpg

他の種類のネットワークチェックを追加するには、上記と同じ要領で他の種類のモジュールを選択してください。

1.4 ICMP モニタリング

前述の例は、ICMP モニタリングの例でしたが、重要で正確な情報を提供する、より基本的かつ簡単なチェック手法があります。ICMP チェックには次の 2つの種類があります。

icmp_proc は、IP アドレスが応答するかどうかの (ping) チェックを行います。

icmp_data は、応答遅延のチェックを行います。IP アドレスに対して ICMP 応答にミリ秒単位でどれだけかかったかを確認します。

1.5 TCP モニタリング

TCP チェックは、ポートの状態や TCP サービスの状態を確認することができます。

TCP のテストでは、2つのフィールドがあります。

Cap5 snmp 9.png

TCP のチェックは、デフォルトでは単純にポートが開いているかどうかを確認します。オプションで、テキスト文字列の送信と、それの応答を受信できます。

通信が正常に行われているかをチェックするために、テキスト文字列を送り ("^M" は、改行を表します) その応答を確認することができます。これにより簡単なプロトコルチェックが可能です。例えば、ウェブサーバに次の文字列を送信し、

 GET / HTTP/1.0^M^M 

次の応答を確認するとで、正常かどうかの確認ができます。

200 OK

これらは、TCP 送信文字列および、TCP 受信文字列フィールドに定義します。

TCP 送信文字列

TCP ポートに送信するパラメータを設定します。^M は、改行コードの送信を意味します。複数の送信・応答文字列を定義するには、"|" で区切ってください。

TCP 受信文字列

TCP 接続で受信する応答文字列を設定します。複数の送信・応答文字列を定義する場合は、それぞれを "|" 文字で区切ってください。

Pandora FMS の TCP チェックでできるのは、ポートが開いているかどうかや応答があるかどうかだけではありません。複数ステップで、データを送信し、それの応答文字列を見ることができます。すべての手順が正しい場合に、正常と判断させることができます。

複数ステップで Pandora FMS の応答チェックの仕組を利用するには、各ステップの文字列を | で区切ります。

SMTP 接続の例を以下に示します。

R: 220 mail.supersmtp.com Blah blah blah
S: HELO myhostname.com
R: 250 myhostname.com
S: MAIL FROM: 
R: 250 OK
S: RCPT TO: 
R: 250 OK
S: DATA
R: 354 Start mail input; end with .
S: .......your mail here........
S: .
R: 250 OK
S: QUIT
R: 221 mail.supersmtp.com Service closing blah blah blah

これをチェックしたい場合、各フィールドに次のように定義します。

TCP 送信文字列

HELO myhostname.com^M|MAIL FROM: ^M| RCPT TO: ^M

TCP 受信文字列

250|250|250

最初の 3つのステップが OK (コード 250) であれば、SMTP は正常です。メールを実際に送信する必要はありません (必要であればそのような設定も可能です)。これにより、プレーンテキストを用いたプロトコルに対する TCP チェックが実現できます。

1.6 SNMP モニタリング

1.6.1 SNMP モニタリングの概要

SNMP モニタリングに関して話をする場合、ポーリングとトラップは区別することが重要です。SNMP ポーリングは、Pandora がルータやスイッチ (また、snmp エージェントをインストールしたサーバ) など SNMP デバイスに対して snmpget コマンドを実行することにより実施されます。これは、(指定した秒間ごとに )定期的に実行される処理です。逆に、SNMP トラップの受信は非同期処理です (いつ発生するかはわかりません)。一般的には、デバイスからの "アラート" を受信するのに使われます。例えば、スイッチのポートダウンや、筐体の温度上昇が発生したような場合が該当します。

SNMP ポーリングを利用するには、Pandora のネットワークモジュールの作成で SNMP モジュールを追加すれば良いだけです。多くのデータは、インクリメンタル (generic_data_inc) です。たとえば、値を要求すると、デバイスが稼働し始めた時からの合計値を返します。したがって、ある期間のデータ量を計測したい場合は、一つ前の値との差を見る必要があります。これにより秒間のデータを得ることができます。この処理は、Pandora の generic_data_inc を利用することにより実施できます。

SNMPトラップの利用は、全く異なります。(SNMP コンソール以外は) 特に設定する必要なく、任意のデバイスからトラップを受信することができます。トラップを受信すると、SNMP コンソールに表示されます。

IP エージェントや custom data (トラップ内で定義するデータ) で、OID (3.4.1.1.4.5.24.2 といったようなトラップを判別するコード) をベースにしたアラートの定義が可能です。エージェントの特定のテキストモジュールに情報をコピーするようにもできます。モジュールを定義すると、SNMP トラップによって転送処理が呼び出されます。

Pandora FMS は、SNMP をサポートしているどんなデバイスでも対応します。現在、SNMP v1, v2, v2c および v3 に対応しています。

Pandora FMS は、SNMP に個別の OID を利用します。Pandora FMS での個々の OID は、ネットワークモジュールとして定義することになります。例えば、24ポートの Cisco Catalyst スイッチをモニタする場合、各ポートの状態、入力トラフィック、出力トラフィックで、計 72 個のモジュール (24 x 3) を定義することになります。

SNMP デバイスを扱うは次に示す項目が必要です。

  • SNMP プロトコルがどのようなもので、どのように動作するかを知る必要があります。詳細は、IETF から公開されている RFC3411 に示されています。
  • リモートデバイスの IP および SNMP コミュニティを知る必要があります。
  • ネットワークサーバが SNMP アクセスできるように、デバイスの SNMP 管理を有効にする必要があります。

このネットワークサーバは、ネットワークモジュールを定義するときにエージェントに割り当てられます。サーバがダウンしたときに他のサーバからアクセスをするような場合、他の IP アドレスからアクセスが発生するということを理解してください。

  • リモートデバイスのチェックをしたい特定の OID を知る必要があります。
  • デバイスが返す値をどのように扱えばよいかを知る必要があります。SNMP デバイスは、それぞれ異なるファーマットでデータを返します。

Pandora FMS は、日にちや時間に変換されない timetick データを除き、ほとんどすべてのデータを扱うことができます。カウンタデータは、Pandora が remote_snmp_inc として管理する特別重要なものです。それは、数値データとしてではなく、カウンタとして認識されます。多くの SNMP データはカウンタ値になっています。それをモニタするためには、remote_snmp_inc として設定する必要があります。

1.6.2 エージェントからの SNMP モニタリング

バージョン 3.2 から、Windows エージェントからも SNMP の情報を取得することができるようになりました。Unix/Linux では、snmpget が以前からありましたが、Windows システムにはなく別途インストールするのは簡単ではありませんでした。

我々は、Windows エージェントにデフォルトで snmpget.exe (net-snmp プロジェクトの一部で BSD ライセンスです) を組み込み、基本的な MIB および snmpget.exe ユーティリティを呼び出すためのラッパースクリプトを追加しています。

これを利用することにより、エージェントから SNMP でエージェントからアクセスできるリモートシステムの情報を取得することができます。これは、"サテライトエージェント" や "プロキシエージェント" と(マニュアルでは)呼んでいます。

Windows における実行の書式は次の通りです。

module_exec getsnmp.bat <comunidad_SNMP> <ip de destino> <OID>

Windows エージェントで実行する SNMP モジュールの例を以下に示します。

module_begin
module_name SNMP_if3_in
module_type generic_data_inc
module_exec getsnmp.bat public 192.168.55.1 .1.3.6.1.2.1.2.2.1.10.3
module_end
module_begin
module_name SNMP_if3_desc
module_type generic_data_string
module_exec getsnmp.bat public 192.168.55.1 IF-MIB::ifDescr.3
module_end
module_begin
module_name SNMP_Sysup
module_type generic_data
module_exec getsnmp.bat public 192.168.55.1 DISMAN-EVENT-MIB::sysUpTimeInstance
module_end

Unix エージェントでの同様の実行例です。

module_begin
module_name SNMP_if3_in
module_type generic_data_inc
module_exec snmpget -v 1 -c public 192.168.55.1 .1.3.6.1.2.1.2.2.1.10.3
module_end
module_begin
module_name SNMP_Sysup
module_type generic_data
module_exec snmpget -v 1 -c public 192.168.55.1 DISMAN-EVENT-MIB::sysUpTimeInstance
module_end

基本的な OID は、数値にも置き換え可能で、常に数字の OID を使うことをお勧めします。ツールが変換できるかどうか分からないためです。多くの場合、MIB は Windows Wdeareba /util/mibs ディレクトリに、Linux であれば、/usr/share/snmp/libs ディレクトリにあります。

1.6.3 SNMP のネットワークモジュールでのモニタリング

SNMP でのモニタリングを出来るようにするためには、少なくとも対象の IP アドレスと SNMP コミュニティを知らなくてはいけません。モニタ項目の OID を知ることも重要ですが、それぞれの OID が何であるかを snmpwalk によって得ることができます。

SNMP でのモニタリングを行うためには、まず最初にそれのエージェントを作成する必要があります。すでに存在するエージェントに対しては、前述の方法に従って新たなネットワークモジュールを追加します。

モジュールを作成したあとは、モジュールの設定にて SNMP のデータの種類を選択します。

Cap5 snmp 1.png

モニタしたいデータの種類に合った SNMP の定義を選択します。

SNMP のデータの種類を選択すると、SNMP の追加フィールドがフォームに現れます。

Cap5 snmp 2.png

次に、フィールドの設定を行います。

SNMP コミュニティ

SNMP コミュニティです。モニタリングに必要なパスワードのようなものです。

SNMP バージョン

デバイスの SNMP プロトコルバージョンを設定します。1,2 および 2c を選択できます。

SNMP OID

モニタする OID を設定します。数値が設定できます。文字で設定した場合、MIB を通して数値に変換されます。

文字で表した OID は次のような形式になります。

iso.org.dod.internet.private.transition.products.chassis.card.slotCps.cpsSlotSummary.cpsModuleTable.cpsModuleEntry.cpsModuleModel.3562.3

数値では次のようになります。

  1.3.6.1.4.868.2.4.1.2.1.1.1.3.3562.3

文字で表した MIB が使えない場合は、システムに MIB をインストールしても良いですが、数値を直接指定するのが良いです。解りにくくはなりますが、MIB を必要とせず問題が発生しにくいです。

snmpwalk

すべての OID を取得します。管理画面にすべてを表示します。

SNMP コミュニティおよびバージョンがわかっていて、OID がわからない場合、snmpwalk ボタンを押すと、全 OID のリストを取得することができます。システムがそれを "翻訳" できる (該当の MIB ファイルを持っている) 場合は、文字データで表示されます。そうでなければ数値で表示されます。

Pandora FMS は、直接利用することが可能ないくつかの OID をデータベースに保持しています。例えば、モジュールを作成したときに、Cisco MIB を選択すると、Cisco の MIB 一覧を表示します。

Cap5 snmp 4.png

このコンポーネントを選択すると、その中に存在する MIB を選択することができます。

Cap5 snmp 5.png

こうすることによって、フィールドに必要な情報を埋めることができます。

エンタープライズ版の Pandora FMS には、ほかのデバイス向けのより多くの MIB パッケージが含まれています。 データを取り込むには、作成 ボタンをクリックします。

作成したモジュールのデータを参照するには、上の 参照 ボタンをクリックします。すると、データ収集を開始した時点からのデータが表示されます。

Cap5 snmp 6.png

テキスト文字列のデータを参照するには、データ へ行きます (例では、システムの説明)。

Cap5 snmp 7.png

SNMP System Description データモジュールで受信したデータは、赤で囲った部分です。

1.6.4 MIB を参照する外部ツールと、Pandora FMS での設定

Pandora FMS で利用する OID を調べるためには、それぞれのベンダから提供される MIB を参照するための MIB ブラウザの利用をお勧めします。これらの MIB ブラウザは、MIB を読んだり分析したりするツールで、MIB の OID をツリー表示してくれます。デバイスのモニタに必要な OID が何であるかを検索することができます。

以下に MIB 管理ツールを紹介します。

  • iReasoning MIB Browser (Windows, Linux, Java): [1]
  • Get-If Free MIB Browser (Windows): [2]
  • TKMib: UNIX および、ほとんどの GNU/Linux ディストリビューションで利用できます。

iReasoning ツールを利用して作業する場合の例を示します。

最初のスナップショットでは、いくつかの OID を認識しているロードされた MIB を見ています。これらの OID は、文字列もしくは数値で表現されています。Pandora FMS は、両方認識可能です。ただし、OS に正しい MIB ファイルがロードされていない場合は、数値の OID のみ利用可能です。どこでも使えるという意味では、数値の OID をお勧めします。

Snmp manager 1.jpg

二番目のスナップショットでは、MIB ファイルの無いツリーに対して、再帰的な snmpwalk を実行しています。結果、数値の OID が表示され、どれが何を意味しているのかが良くわかりません。

Snmp manager 2.jpg

どんな MIB ツールを使うかに関係なく、何を表す OID であるか確認するためにはリファレンスは参照する必要があります (いくつかのベンダは、MIB および OID のリファレンスを用意しています)。ほかにもベンダでは SNMP に関してドキュメント化していたりするなど、必要とする OID を確認しやすくなっています (UNIX システムで一般的な UCD-SNMP などはそのようになっています)。その他 AIX、Windows などの多くの OS では SNMP のドキュメントが充実しています。

SNMP に関するお勧めリンク

  • Full OID Catalog for CISCO (非常に便利です): [3]
  • HP Printer MIB: [4]
  • Nagios Exchange - SNMP [5]
  • ルータで共通に使われる OID: [6]

1.6.5 ネットワークモジュールの共通拡張機能

以下の画面では、ネットワークモジュール設定の拡張機能を表示しています。

Cap5 snmp 8.png

説明 (Description)

モジュールの説明です。デフォルトの説明が入っていますが、変更可能です。

カスタム ID (Custom ID)

エージェントに関する情報をサーバからマルチキャストで送信したい場合に必要なカスタマイズ可能な ID です。また、この値は、Pandora FMS のデータを外部システムで利用する場合にも使えます。

間隔 (Interval)

モジュールの実行間隔です。例にあるように、エージェントのそれとは違う設定が可能です。

データ保存倍率 (Post process)

モジュールデータの事前処理です。取得した値を掛け合わせたり割ったりするのに便利です。例えば、データがバイト単位であった場合に、メガバイト単位で表示したい場合などです。

最小値 (Min. Value)

モジュールの最小値です。これより小さい値は不正な値として無視します。

最大値 (Max. Value)

モジュールの最大値です。これより大きい値は不正な値として無視します。

データのエクスポート (Export target)

モジュールから取得したデータをエクスポートサーバへエクスポートするのに利用します。これは、エンタープライズ版の Pandora FMS で、エクスポートサーバを設定している場合にのみ利用可能です。より詳細は、エクスポートサーバの章を参照してください。

1.7 ネットワークモジュールの共通拡張機能

以下の画面では、ネットワークモジュールの拡張機能を表示しています。



Cap5 snmp 8.png


説明(Description) モジュールの説明です。デフォルトの説明は変更できます。

カスタムID(Custom ID)

エージェントの情報と共にサーバがメッセージを送信する場合に必要なカスタムIDです。また、Pandora FMS と構成データベースなど外部のデータを統合するのに利用できます。

間隔(Interval)

モジュールの実行間隔です。エージェントとは異なります。

保存倍率(Post process)

モジュールの事後処理です。モジュールの値に掛け算や割り算を行うのに便利です。例えば、バイト単位のデータをメガバイトで表示したい場合などです。

最小値(Min. Value)

モジュールの最小値です。この値より小さくなると、異常な値としてみなされます。

最大値(Max. Value)

モジュールの最大値です。この値より大きくなると、以上な値としてみなされます。

エクスポートターゲット(Export target)

モジュールから返される値をエクスポートサーバへ渡すのに便利です。Pandora FMS Enterprise版にのみにあり、エクスポートサーバを事前に設定する必要があります。詳細はエクスポートサーバの説明を参照してください。


1.8 WMI でのリモート Windows モニタリング

Windows システムやシステムサービスをリモートから SMI を通してモニタするための仕組です。 クエリは、OS の内部クエリを実行するための Microsoft の SQL 言語の WQL で行われます。可能なクエリは、Micorsoft データベースに示されています。 WMI の値をツリー表示し、必要な WMI の値がどこにあるかを見つけることができる WMI エクスプローラというツールがあります。Windows の "standard" サーバで、1,000 以上のクエリが存在します。また、追加ソフトウエアには、それ用のクエリがあります。あらかじめ定義されたモジュール設定を持つことはできませんが、ツールにより必要とするものを見つけることができます。

Windows で動作している WMI エクスプローラのスクリーンショット

Wmiexplorer.png

注意: WMI を通してモニタサービスを利用するためには、Pandora サーバの設定 /etc/pandora/pandora_server.conf で、次のようにその機能を有効にする必要があります。

# wmiserver : 1 or 0. Set to 1 to activate WMI server with this setup
# DISABLED BY DEFAULT
  wmiserver 1

WMI を通してモニタリングを開始するには、サービスをモニタするための対応するエージェントを作成します。

Pandora FMS コンソールのシステム管理(Administration)メニューで、エージェント管理(Manage agents) を選択します。

Nono.jpg

次の画面で、エージェントの作成(Create agent)をクリックします。

Nona.jpg

新たなエージェントのデータを入力し、エージェントの作成(Create agent)をクリックします。

Rellene.jpg

エージェントを作成したあと、上のモジュールをクリックします。そこで、新たな WMI サーバモジュールを選択し、作成(Create)をクリックします。

45opx

WMI を通して Windows システムをリモートでモニタできるようにするためには、次のフォームの設定が必要です。 次のように、必要なフィールドを設定します。

名前(Name)

モジュール名を設定します。

種類(Type)

モニタするデータの種類を設定します。

対象 IP(Target IP)

モニタするリモートシステムの IP アドレスを設定します。

名前空間(Namespace)

WMI のネームスペースを設定します。いくつかのクエリにおいて、このフィールドが空でなければ (デフォルト)、アプリケーションに依存した情報がモニタされます。

ユーザ名(Username)

administrator もしくは、リモートから WMI クエリを実行する権限があるユーザ名を設定します。

パスワード(Password)

administrator もしくは指定したユーザのパスワードを設定します。

WMI クエリ(WMI Query)

WMI クエリは SQL に似ています。以下に例を示します。

SELECT LoadPercentage from Win32_Processor WHERE DeviceID = "CPU0"
SELECT SerialNumber FROM Win32_OperatingSystem
SELECT AvailableBytes from Win32_PerfRawData_PerfOS_Memory
SELECT DiskWriteBytesPersec from Win32_PerfRawData_PerfDisk_PhysicalDisk WHERE name = "_Total"

Key 文字列(Key string)

クエリにより返された文字列を比較するためのオプションです。結果は文字列ではなく、存在すれば 1、そうでなければ 0 で返ります。

フィールド番号(Field number)

返されるフィールドの数です。0 から開始する数字です (WMI クエリは、1つ以上のフィールドを返します)。ほとんどの場合は、0 か 1 です。

必要なフィールドの入力:

Campos.jpg

拡張オプションは、全てのネットワークモジュールと同じです。詳細は、ネットワーク拡張フィールドの説明を参照してください。モジュールは IP アドレスを持っている必要があることに注意してください。必要であれば変更可能です。モジュールの設定が完了したら、作成をクリックしてください。

もし、正確なパラメータがわからない場合は、Pandora FMS データベースに含まれるデフォルトのいずれかを選択してください。WMI モジュールコンポーネントを選択することにより実施します。

Galleta.jpg

その後、可能な WMI チェックを選択します。

Galletita.jpg

ユーザ名とパスワード以外の必要な情報が自動的に入力されます。アドミニストレータ権限のユーザとパスワードが必要であることを忘れないでください。そうでないとモジュールは値を取得できません。

Otro.jpg

モジュールの設定が完了したら、作成をクリックしてください。 次の画面では、エージェントのモジュールが表示されており、Windows version というモジュールが追加されています。

General.png

見ての通り、モジュールにワーニングが出ています。これは、モジュールが追加されたばかりで、まだデータを受信していないことを意味しています。データを受信し始めればワーニングは消えます。

作成したモジュールのデータを参照するには、上の参照をクリックすると受信し始めてからのデータが表示されます。

Generala.png

モジュールの文字列データ (例えば、システムの説明など) を参照するには、上のデータをクリックします。

Generalin.png

エンタープライズ版の Pandora FMS には、Windows の次に示すような情報をリモートでモニタするための 400 以上の WMI モジュールがあります。

  • アクティブディレクトリ
  • BIOS
  • システム情報
  • Windows 情報
  • プリンタ
  • MSTDC
  • IIS
  • LDAP
  • Microsoft Exchange

1.9 プラグインを使ったモニタリング (バージョン4.0.xまで)

Pandora FMS は、どんなコンポーネントでもデフォルトで含んでいるわけではありません。必要に応じて、エージェントのモジュールに追加できるコンポーネントを作成する必要があります。Pandora FMS では、インストールディレクトリに元々入っていない新たなプラグインを追加することができます。

Pandora FMS で利用できるようにプラグインを追加するには、コンソールのシステム管理メニューで、「サーバ管理 (Manage servers)」をクリックします。その後、「プラグイン管理 (Manage plugins)」をクリックします。

Verdecito1.jpg

プラグインの登録画面になったら、追加 (Create) をクリックするだけです。

Verdecito2.jpg
g

プラグイン作成フォームでは次のデータを入力します。

名前 (Name)

プラグインの名前を入力します。この例では Nmap としています。

プラグインコマンド (Plugin command)

プラグインコマンドを置いているパスを指定します。プラグインディレクトリは、デフォルトの設定では /usr/share/pandora_server/util/plugin/ になっています。しかし、任意のパスを指定することが可能です。この例では、/usr/share/pandora_server/util/plugin/udp_nmap_plugin.sh と書いています。

Pandora サーバがこのスクリプトを実行するので、スクリプトにはリードおよび実行権限をつけておく必要があります。

プラグインタイプ (Plugin type)

プラグインには、標準と Nagios の二種類があります。標準プラグインは、パラメータを受け取って処理を実行する通常のスクリプトです。Nagios プラグインは、その名が示す通り Nagios のプラグインで、Pandora FMS から実行することができます。主な違いは、Nagios プラグインは、テストが成功したかどうかのエラーレベルを戻り値で示す点です。

Nagios プラグインを、(正常か異常かの) 状態の取得ではなく情報収集に使いたい場合は、Nagios プラグインを標準モードで登録します。

例 (NMAP) では、標準を選択しています。

最大タイムアウト (Max. timeout)

プラグインのタイムアウト値です。ここで指定した時間内に応答を得られなければ、モジュールは不明状態となり、データが更新されません。これは、プラグインでのモニタリングを実装する上で重要な要素です。プラグインの実行時間がこれより長い場合、全く値を取得できないことになります。この値は、プラグインとして実行するスクリプトが値を得るのにかかる時間より長い時間に設定する必要があります。何も設定しない場合、設定ファイルの plugin_timeout の値が利用されます。

この例では、15 を設定しています。

IP アドレスオプション (IP address option)

プラグインに IP アドレス情報を渡すためのオプションを設定します。すべてのプラグインに対して、少なくともテスト対象の IP アドレスは渡す必要があります。IP アドレス自体は、モジュールが設定されているエージェントのものが渡されます。

Pandora が IP アドレスをプラグインに渡すために、IP アドレスを指定するためのプラグインのオプションを設定します。オプションが何であるかはプラグインに依存します。この例では、-t を設定しています。

Port オプション (Port option)

上記と同様に、テスト対象のポート番号をプラグインへ渡すためのオプションを設定します。この設定は必須ではなく、ポート番号を指定する必要がある場合のみ利用します。この例では、Nmap テストの TCP 宛先ポートを指定する -p を設定しています。

Password オプション (Password option) / User オプション (User option)

ユーザ名とパスワードを渡すためのオプションを設定します。この例では未使用なので、何も定義していません。

説明 (Description)

プラグインの説明です。Test #UDP open ports のように、簡単な説明を書きます (日本語も入力可能です)。可能であれば、引数として渡すパラメータを指定するためのオプションの説明等を書くと良いでしょう。

File:Verdecito3.jpg

作成 (Create)をクリックし、プラグインが作成されたか確認します。

Verdecito4.jpg

この例のプラグインのコードは次のようになっています。

#!/bin/bash
# This is called like -p xxx -h xxxx
HOST=$4
PORT=$2
nmap -T5 -p $PORT -sU $HOST | grep open | wc -l

IP アドレスとポート番号をオプションパラメータとして受け取り、UDP の (-sU) nmap を実行し、出力結果を open で grep することにより、開いているポートの数を出力します。

プラグインを作成すると、それをエージェントで利用できるようになります。まだエージェントを作成していないようであれば、作成する必要があります。Pandora FMS コンソールのシステム管理 (Administration) メニューで、エージェント管理 (Manage agents) をクリックしてください。

Verdecito5.jpg

次の画面で、エージェントの作成 (Create agent) をクリックします。

Verdi1.jpg

新たなエージェントのデータを入力し、エージェントの作成 (Create agent) をクリックします。

Trescientos.jpg

エージェントを作成したら、上の方にある (モジュール (Modules)) のメニューをクリックします。そこで、「プラグインサーバモジュールの新規作成 (credate a new network module)」を選択し、作成 (Create) をクリックします。

Trescientos1.jpg

以下のフォームで、未定義の部分を設定します。generic numeric 等のモジュールの種類を選択し、 ユーザやパスワード、モニタ対象の IP アドレスやポート番号を設定します。

File:Trescientos2.jpg

設定が終わったら、作成 (Create) をクリックします。

以下の画面で、エージェントに Nmap モジュールが表示されているのがわかります。

Topito1.jpg

モジュールにワーニングが出ていますが、それはモジュールが追加されたばかりで、まだデータを受信していないことを意味します。データの受信が開始されると、ワーニングは消えます。

作成したモジュールのデータを見るためには、上の方の 表示 (View) をクリックします。すると、受信を始めてからのデータが表示されます。

Topito2.jpg

テキスト文字列のモジュールデータ (例は、システムの説明) を見るためには、上の方の データ (Data)へ行きます。

1.9.1 例 1: MySQL のプラグインモジュール

プラグイン実装の一例をあげます。ここで紹介するのは、デフォルトでは Pandora に無い、MYSQL をチェックするプラグインです。

次の設定にて、MySQL のプラグインモジュールを作成します (システム管理メニュー(Administration)から、サーバ管理(Manage servers) -> プラグイン管理(Manage plugins) を実行)。

  • 名前(Name): MySQL
  • プラグインコマンド(Plugin command): /usr/share/pandora_server/util/plugin/mysql_plugin.sh
  • プラグインタイプ(Plugin type): Standard
  • 最大タイムアウト(Max. timeout): 10
  • IPアドレスオプション(IP address option): -s
  • Userオプション(User option): -u
  • Passwordオプション(Password option): -p
  • 説明(Description): -q Connections
-q Com_select
-q Com_update
-q Innodb_rows_read

画面は次のようになります。

File:Fosforo1.jpg

このプラグインは、4つのチェックを行います。

  • -q Connections: 接続
  • -q Com_select: 開始時点からの select クエリ数
  • -q Com_update: 開始時点からの update クエリ数
  • -q Innodb_rows_read: Innodb のファイルリード数

上記プラグインを使って、Pandora FMS がインストールされているシステムのエージェントにモジュールを作成してみます。名前は、Mysql Connections 等で、localhost において、Pandora データベースの pandora ユーザとそのパスワードで自身のデータベースをチェックします。プラグインパラメータ(Plugin parameters)には、-q Connections を設定しています。

作成画面は次のようになります。

作成すると、Nmap モジュールの次に表示されます。

Fosforo3.jpg

メインページの情報は次のようになります (表示(View) タブ)。

Faltaba.jpg

詳細情報は次のようになります (データ(Data) タブ)。

Fosforo5.jpg

1.9.2 例2: SMTP サーバリモートプラグイン

バージョン 4.0.2 からデフォルトでこのプラグインが付属しています。旧バージョンを使っている場合は、Pandora FMS のモジュールライブラリ(pandorafms.org 参照)からダウンロード、インストールできます。

このプラグインは、リモートサーバを使ってメールを送信します。サーバの IP、ポート番号、ユーザ名、パスワードと、認証方式を指定し、また、メールの送信先を指定できます。動作していれば 1 を返し、そうでなければ 0 を返します。タイプは、generic_proc を利用します。

このプラグインを利用したモジュール設定の画面を以下に示します。

1.9.3 例3: DNS サーバリモートプラグイン

バージョン 4.0.2 からデフォルトでこのプラグインが付属しています。旧バージョンを使っている場合は、Pandora FMS のモジュールライブラリ(pandorafms.org 参照)からダウンロード、インストールできます。

このプラグインは、外部 DNS を参照して、指定したドメイン (artica.es など) の IP アドレスが変化していないかどうかをチェックします。これにより、不正なバランシングや DNS アタックなどがなく、ドメインが正しい IP を返しているかどうかを検証できます。正常であれば 1 を返し、そうでなければ 0 を返します。タイプは、generic_proc を利用します。

このプラグインを利用したモジュール設定の画面を以下に示します。

1.9.4 例4: UDP ポートリモートプラグイン

バージョン 4.0.2 からデフォルトでこのプラグインが付属しています。旧バージョンを使っている場合は、Pandora FMS のモジュールライブラリ(pandorafms.org 参照)からダウンロード、インストールできます。

このプラグインは指定したアドレスと UDP ポートをチェックします。正常であれば 1を返し、そうでなければ 0を返します。タイプは、generic_proc を利用します。

このプラグインを利用したモジュール設定の画面を以下に示します。





1.10 プラグインを使ったモニタリング (バージョン5.0から)

Pandora FMS は、どんなコンポーネントでもデフォルトで含んでいるわけではありません。必要に応じて、エージェントのモジュールに追加できるコンポーネントを作成する必要があります。Pandora FMS では、インストールディレクトリに元々入っていない新たなプラグインを追加することができます。

Pandora FMS で利用できるようにプラグインを追加するには、コンソールのシステム管理メニューで、「サーバ管理 (Manage servers)」をクリックします。その後、「プラグイン管理 (Manage plugins)」をクリックします。

Verdecito1.jpg

プラグインの登録画面になったら、追加 (Create) をクリックするだけです。

Verdecito2.jpg
g

プラグイン作成フォームでは次のデータを入力します。



Plugin creation.png



名前 (Name)

プラグインの名前を入力します。この例では Nmap としています。

プラグインコマンド (Plugin command)

プラグインコマンドを置いているパスを指定します。プラグインディレクトリは、デフォルトの設定では /usr/share/pandora_server/util/plugin/ になっています。しかし、任意のパスを指定することが可能です。この例では、/usr/share/pandora_server/util/plugin/udp_nmap_plugin.sh と書いています。

Pandora サーバがこのスクリプトを実行するので、スクリプトにはリードおよび実行権限をつけておく必要があります。

プラグインタイプ (Plugin type)

プラグインには、標準と Nagios の二種類があります。標準プラグインは、パラメータを受け取って処理を実行する通常のスクリプトです。Nagios プラグインは、その名が示す通り Nagios のプラグインで、Pandora FMS から実行することができます。主な違いは、Nagios プラグインは、テストが成功したかどうかのエラーレベルを戻り値で示す点です。

Nagios プラグインを、(正常か異常かの) 状態の取得ではなく情報収集に使いたい場合は、Nagios プラグインを標準モードで登録します。

例 (NMAP) では、標準を選択しています。

最大タイムアウト (Max. timeout)

プラグインのタイムアウト値です。ここで指定した時間内に応答を得られなければ、モジュールは不明状態となり、データが更新されません。これは、プラグインでのモニタリングを実装する上で重要な要素です。プラグインの実行時間がこれより長い場合、全く値を取得できないことになります。この値は、プラグインとして実行するスクリプトが値を得るのにかかる時間より長い時間に設定する必要があります。何も設定しない場合、設定ファイルの plugin_timeout の値が利用されます。

この例では、15 を設定しています。

説明(Description)

プラグインの説明です。Test #UDP open ports のように、簡単な説明を書きます (日本語も入力可能です)。可能であれば、引数として渡すパラメータを指定するためのオプションの説明等を書くと良いでしょう。

プラグインコマンド(Plug-in command)

プラグインコマンドのパスです。標準のインストールでのデフォルトでは、/usr/share/pandora_server/util/plugin/ です。任意のパスを設定できます。このでの例では、/usr/share/pandora_server/util/plugin/udp_nmap_plugin.sh を入力しています。

Pandora サーバがこのスクリプトを実行するため、スクリプトの読み込みおよび実行権限がある必要があります。

プラグインパラメータ(Plug-in parameters)

コマンドのパラメータは、コマンドの後にスペース区切りで指定するものです。このパラメータには、_field1_ _field2_ ... _fieldN_ といったマクロが利用できます。

パラメータマクロ(Parameters macro)'

プラグインパラメータフィールドには、マクロを制限なく利用することができます。このマクロは、モジュール設定の通常のテキストフィールドとして表示されます。

それぞれのマクロには、次の 3つのフィールドがあります。

  • 説明(Description): マクロの簡単な説明です。フィールドのラベルになります。
  • デフォルト値(Default value): デフォルトでフィールドに割り当てられる値です。
  • ヘルプ(Help): マクロの説明です。

マクロ設定の例:



Macro configuration.png



モジュールエディタでのマクロの例:



Macro editor.png




設定が完了したら、作成 (Create)をクリックし、プラグインが作成されたか確認します。



Verdecito4.jpg


この例のプラグインのコードは次のようになっています。

#!/bin/bash
# This is called like -p xxx -h xxxx
HOST=$4
PORT=$2
nmap -T5 -p $PORT -sU $HOST | grep open | wc -l

基本的に、コマンドとパラメータをつなげ、マクロをその値に置き換えて、UDP の (-sU) nmap を実行し、出力結果を open で grep することにより、開いているポートの数を出力します。

プラグインを作成すると、それをエージェントで利用できるようになります。まだエージェントを作成していないようであれば、作成する必要があります。Pandora FMS コンソールのシステム管理 (Administration) メニューで、エージェント管理 (Manage agents) をクリックしてください。

Verdecito5.jpg

次の画面で、エージェントの作成 (Create agent) をクリックします。

Verdi1.jpg

新たなエージェントのデータを入力し、エージェントの作成 (Create agent) をクリックします。

Trescientos.jpg

エージェントを作成したら、上の方にある (モジュール (Modules)) のメニューをクリックします。そこで、「プラグインサーバモジュールの新規作成 (credate a new plugin module)」を選択し、作成 (Create) をクリックします。

Trescientos1.jpg

以下のフォームで、未定義の部分を設定します。generic numeric 等のモジュールの種類を選択し、 モニタ対象の IP アドレスやポート番号を設定します。



Example1 edition module.png


設定が終わったら、作成 (Create) をクリックします。

以下の画面で、エージェントに Nmap モジュールが表示されているのがわかります。

Topito1.jpg

モジュールにワーニングが出ていますが、それはモジュールが追加されたばかりで、まだデータを受信していないことを意味します。データの受信が開始されると、ワーニングは消えます。

作成したモジュールのデータを見るためには、上の方の 表示 (View) をクリックします。すると、受信を始めてからのデータが表示されます。

Topito2.jpg

テキスト文字列のモジュールデータ (例は、システムの説明) を見るためには、上の方の データ (Data)へ行きます。

1.10.1 例 1: MySQL のプラグインモジュール

プラグイン実装の一例をあげます。ここで紹介するのは、デフォルトでは Pandora に無い、MYSQL をチェックするプラグインです。

次の設定にて、MySQL のプラグインモジュールを作成します (システム管理メニュー(Administration)から、サーバ管理(Manage servers) -> プラグイン管理(Manage plugins) を実行)。

  • 名前: MySQL
  • プラグインタイプ: Standard
  • 最大タイムアウト: 10秒
  • 説明:

MySQL check plugin

チェック内容:

このプラグインは、4つのチェックを行います。

Connections: 接続 Com_select: 開始からの select クエリ数 Com_update: 開始からの update クエリ数 Innodb_rows_read: Innodb ファイル読み出し

  • プラグインコマンド(Plugin command): /usr/share/pandora_server/util/plugin/mysql_plugin.sh
  • プラグインパラメータ(Plugin parameters): -s _field1_ -u _field2_ -p _field3_ -q _field4_
  • マクロ(Macro) _field1_:
    • 説明(Description): IP Address
    • デフォルト値(Default value): X.X.X.X
  • マクロ(Macro) _field1_:
    • 説明(Description): User
    • デフォルト値(Default value): User
  • マクロ(Macro) _field1_:
    • 説明(Description): Password
    • デフォルト値(Default value): Password
  • マクロ(Macro) _field1_:
    • 説明(Description): Check
    • デフォルト値(Default value): Connections
    • ヘルプ(Help): Possible values: Connections/Com_select/Com_update/Innodb_rows_read


画面は次のようになります。



Plugin mysql.png


このプラグインは、4つのチェックを行います。

  • Connections: 接続
  • Com_select: 開始時点からの select クエリ数
  • Com_update: 開始時点からの update クエリ数
  • Innodb_rows_read: Innodb のファイルリード数

上記プラグインを使って、Pandora FMS がインストールされているシステムのエージェントにモジュールを作成してみます。名前は、Mysql Connections 等で、localhost において、Pandora データベースの pandora ユーザとそのパスワードで自身のデータベースをチェックします。プラグインパラメータ(Plugin parameters)には、-q Connections を設定しています。

作成画面は次のようになります。



Plugin mysql module.png


作成すると、Nmap モジュールの次に表示されます。



Fosforo3.jpg


メインページの情報は次のようになります (表示(View) タブ)。



Faltaba.jpg


詳細情報は次のようになります (データ(Data) タブ)。



Fosforo5.jpg



1.10.2 例2: SMTP サーバリモートプラグイン

バージョン 4.0.2 からデフォルトでこのプラグインが付属しています。旧バージョンを使っている場合は、Pandora FMS のモジュールライブラリ(pandorafms.org 参照)からダウンロード、インストールできます。

このプラグインは、リモートサーバを使ってメールを送信します。サーバの IP、ポート番号、ユーザ名、パスワードと、認証方式を指定し、また、メールの送信先を指定できます。動作していれば 1 を返し、そうでなければ 0 を返します。タイプは、generic_proc を利用します。

このプラグインを利用したモジュール設定の画面を以下に示します。

Pandora plugin SMTP5.png

1.10.3 例3: DNS サーバリモートプラグイン

バージョン 4.0.2 からデフォルトでこのプラグインが付属しています。旧バージョンを使っている場合は、Pandora FMS のモジュールライブラリ(pandorafms.org 参照)からダウンロード、インストールできます。

このプラグインは、外部 DNS を参照して、指定したドメイン (artica.es など) の IP アドレスが変化していないかどうかをチェックします。これにより、不正なバランシングや DNS アタックなどがなく、ドメインが正しい IP を返しているかどうかを検証できます。正常であれば 1 を返し、そうでなければ 0 を返します。タイプは、generic_proc を利用します。

このプラグインを利用したモジュール設定の画面を以下に示します。

Pandora plugin DNS5.png

1.10.4 例4: UDP ポートリモートプラグイン

バージョン 4.0.2 からデフォルトでこのプラグインが付属しています。旧バージョンを使っている場合は、Pandora FMS のモジュールライブラリ(pandorafms.org 参照)からダウンロード、インストールできます。

このプラグインは指定したアドレスと UDP ポートをチェックします。正常であれば 1を返し、そうでなければ 0を返します。タイプは、generic_proc を利用します。

このプラグインを利用したモジュール設定の画面を以下に示します。



Pandora plugin UDP5.png