Pandora: Documentation ja: Recon Server

From Pandora FMS Wiki
Jump to: navigation, search

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

1 自動検出(Recon)サーバによるネットワーク検出

1.1 概要

Pandora FMS の自動検出(Recon)サーバは、バージョン 1.3 にて初めて実装されました。そこからいくつかの更新および拡張が行われてきています。自動検出(Recon)サーバは、新たなシステムを見つけるためのユーザ定義のタスクにより ICMP (Ping) を用いてネットワークを探索し、プラグインテンプレートを用いてモジュールの自動適用も行いながら見つかったエージェントを登録します。これにより、新たなシステムが登録され、新たなネットワークモジュールが割り当てられ、自動的にモニタリングが開始されます。

追加されるエージェントが、Pandora FMS にすでに登録されているエージェントと別のものか区別するために、IP アドレスが利用されるという点に注意してください。なぜなら、Pandora FMS 1.3 以降では、エージェントが複数の IP アドレスを持つことができるためです。

自動検出(Recon)サーバはまた、検出したシステムのトポロジも検出することができます。(IPアドレスによって)中間のすべてのホストを区別し、新たなモニタ対象システムの親のホストとして定義することによって、 Pandora FMS から新たなホストへのパス上のホストを追加します。

自動検出(Recon)サーバは、OS の検出に Xprobe2 (インストールされている場合) を利用します。また、開いているポートの検出 (Nmap を利用します) も行います(オプション)。これにより、システムを特定しています。(例: Solaris では 23番ポートが開いており、Windows では 139 および 445 番ポートが開いています)

1.2 自動検出タスク

自動検出タスクは、システム管理メニューの サーバ管理(Manage servers) -> 自動検出管理(Manage recontask) にあります。

Primero.jpg

画面上で 作成(Create) をクリックすることにより新たなタスクを作成できます。また、定義済のタスク名をクリックすることにより、それを編集することができます。

Segundo.jpg

編集もしくは新たな自動検出タスクを作成するときは、タスクが正しく動作するように必要なフィールドに入力する必要があります。

タスク名(Task name)

検出タスクの名前です。異なる設定の複数のタスクがある場合に、タスクを区別するために使います。

自動検出サーバ(Recon server)

タスクに割り当てる自動検出サーバです。もし、複数の自動検出サーバがある場合、どのサーバで自動検出処理を実行するかを選択します。

モード(Mode)

"ネットワークスキャン9Network Scanning)" および "スクリプトカスタム(Script Custom)" のいずれかのタスクモードを選択します。前者のモードは、従来からのネットワークの検出タスクで、後者はカスタムスクリプトによるタスクです。

ネットワーク(Network)

検出する対象のネットワークを設定します。/ でネットマスクのビット数を表したフォーマットで入力します。例えば、192.168.1.0/24 を指定すると、192.168.1.0 から 192.168.1.255 までのクラス C のアドレスを表します。

間隔(Interval)

検出処理を行う間隔です。自動検出処理では、それぞれのアドレスに ping を送信するため、短い間隔は指定しないでください。自動検出対象のネットワークが非常に大きいく (クラス A など)、間隔が短い (6時間) と、Pandora FMS は常にネットワークに ping を送信し続けることになり、必要以上に負荷がかかります。

Template warning.png

自動検出タスクが成功すると既存のエージェントとモジュールが更新されます。更新してほしくない場合は、間隔を 手動 に設定し自動検出タスクを一回のみ実行してください。

 


モジュールテンプレート(Module template)

検出したシステムに適用するプラグインテンプレートです。パラメータ (OS、ポート番号) にマッチするシステムを検出したとき、そのエージェントを登録すると共にプラグインテンプレートに定義されたモジュールを割り当てます。

OS

認識するオペレーティングシステムです。任意(Any)ではなく一つを選択した場合は、そのオペレーティングシステムのみを追加します。静的なパターンで推測を行っているため、ネットワークフィルタやセキュリティソフトウエアの介在、システムのバージョンの改ざん等の条件によっては Pandora FMS がシステムの検出に失敗することもある事に注意してください。オペレーティングシステムの検出を出来るようにするためには、Xprobe2 がインストールされている必要があります。

ポート番号(Ports)

特定のポート番号もしくはポート番号の範囲を、22,23,21,80-90,443,8080 といった形式で記述します。このフィールドを設定すると、ここに指定したポートの一つ以上が開いているホストのみを検出し追加します。検出しても指定したポートが一つも開いていないホストは追加されません。これにより、OS 等の種類によって検出するシステムをフィルタすることができます。例えば、ポート 23 と 57 が開いていれば、ルータである等。

グループ(Group)

検出したシステムを所属させるグループを指定します。必ずいずれか一つのシステムに属する必要があります。未分類のエージェントを所属させるグループがあるのであれば、それを選択するのが良いでしょう。

インシデント(Incident)

新たなシステムを検出したときにインシデントを作成するかどうかを指定します。検出したシステムごとではなく、新たなシステムの検出をすべてまとめた形でタスクごとに 1つのインシデントを作成します。あらかじめ定義されたグループに自動作成されます。

SNMPデフォルトコミュニティ<SNMP Default community)

機器の検出に利用するデフォルトの SNMP コミュニティです。

コメント(Comments)

自動検出タスクに関するコメントです。

OS検出(OS detection)

このオプションを選択すると、OS の検出が行われます。

名前解決(Name resolution)

このオプションを選択すると、エージェントは IP アドレスではなく、設定されていればホスト名で登録されます。

親の検出(Parent detection)

このオプションを選択すると、コンピュータが他に接続されており、その子として作成するかどうかを検出します。

親の再帰(Parent recursion)

検出後にエージェントの親子関係を見る最大の再帰回数を示します。

Tercero.jpg

設定が完了したら、既存の設定を編集している場合は "更新(Update)" を、新規作成の場合は "作成(Create)" をクリックします。

新たなタスクを定義する前に、自動検出(Recon) サーバ が実行されている必要があります。ネットワークサーバに自動的に新たなエージェントを追加するには、ネットワークサーバ も実行されている必要があります。

新たなホストを検出してテンプレートを適用するには、ネットワークが大きい場合数分から数時間かかりますが、ネットワーク全体の検出を行いモニタを開始する操作が、若干のステップで実現できます。

自動検出タスクを定義すると、ネットワークシステムから情報を取得するためにそれが実行されます。状態を参照するには、操作メニューの Pandora サーバ(Pandora servers) を確認します。

Cuarto.jpg

サーバの状態を見るために、画面上部の "全システム(All systems) の部分をクリックしても同じ画面に行くことができます。

Quinto.jpg

この画面では、Pandora FMS サーバの状態を表示します。

Sexto.jpg

コンソールで、Recon サーバを確認しそれをクリックします。次のように、自動検出タスクの状態を確認することができます。

Septimo.jpg

タスクの左側にあるボタンをクリックすると、自動検出タスクが開始されます。実行すると、完了するまでに同じ時間がかかります。

1.2.1 ネットワークトポロジー

自動検出は、ホストを検出するだけでなく、それらがどのように接続されているかも検出することができます。つまり、Pandora FMS は、ネットワークがいくつあるかに関わらず、モニタ対象とネットワーク構成を検出できます。

以下は、我々の開発サーバの一つで動作している Pandora FMS でモニタしている約 1000のシステムのスナップショットです。

Cool network map sample.jpg

これを上手に成功させるためには、レイヤに分けてモニタリングする計画を立てる必要があります。まずは最初に Pandora サーバに近い場所を検出します。次にその先のシステムを検出すると、すでに認識しているノードに関連付けされます。

これを実施するためには、最初にサーバから近いネットワークに対するタスクを作成し、あとからその先のタスクを作成します。基本となるシステムを検出したら、システムに合ったネットワークテンプレートを割り当て、(アプリケーションや OS により) アーキテクチャやシステムの詳細確認を含んだ自動検出タスクを作成します。ウェブサーバのテンプレートであれば、拡張 TCP チェックによるサーバの状態確認、応答時間計測や、SSH や FTP などのサービスポートモニタリングなどです。WMI のチェックや適したプラグインを定義している場合は、それらも追加できます。

検出されたシステムに合っていないモジュールを含むテンプレートを適用した場合、"未実行" として残り、日次メンテナンススクリプトにより自動的に削除されます。データを一度も受け取っていないモジュールは削除されます。

1.2.2 利用例

4 つのクラス C のネットワークにサーバと、1つのクラス B のネットワークにワークステーションがあり、これらの 5つのネットワークのシステムに対してプラグインテンプレートを定義するとします。

例:

  • テンプレート番号 #1: Windows サーバ用で、5つのモジュールがあります。

SNMP にて Windows サーバの CPU 使用率の取得

SNMP にて Windows サーバのメモリ空き容量の取得

SNMP にてネットワークインタフェースの入力トラフィックの取得

SNMP にてネットワークインタフェースの出力トラフィックの取得

ICMP のチェックを実施

  • テンプレート番号 #2:UNIX の HTTP サーバをチェックします。

ICMP のチェックを実施

80番ポートに対する TCP 接続および HTTP コマンド応答を確認

22番ポートに対する SSH 接続を確認

SNMP にて CPU 使用率を取得

SNMP にてネットワークインタフェースの入力トラフィックの取得

SNMP にてネットワークインタフェースの出力トラフィックの取得

  • テンプレート番号 #3: UNIX の Oracle サーバをチェックします。

ICMP のチェックを実施

特定ポートの TCP 接続および、Oracle のコマンド応答を確認

特定のポートが開いているか確認

SNMP にて CPU 使用率を取得

SNMP にてメモリの空き容量を取得

  • テンプレート番号 #4: Windows の CIFS サーバをチェックします。

ICMP のチェックを実施

SNMP にて CPU の使用率を取得

SNMP にてメモリの空き容量を取得

CIFS が稼働しているか確認するための、いくつかの TCP チェックを実施

SNMP にてネットワークインタフェースの入力トラフィックの取得

SNMP にてネットワークインタフェースの出力トラフィックの取得

  • テンプレート番号 #5: 全ワークステーションの生存をチェックします。

ICMP のチェックを実施

21,22,80,8080,5900 や P2P などの特定のポートが forbidden で閉じているかを確認

5つのタスクを作成します。4種類のサーバについては、それぞれのネットワークもしくはサブネットを割り当てます。それぞれのタスクには、異なるグループとネットワークプロフィールを割り当てます。最後のワークステーションについては、異なるグループでクラスB のネットワークを指定します。ワークステーションに関しては短い検出間隔 (半日や一日) に設定し、サーバに関しては長め (2,3日もしくは一週間) に設定します。

サーバが動作しているかどうかをチェックするには、ICMP を使います。エージェントが作成されたら、エージェント名としてホスト名を使うように IP アドレスの名前解決を試みます。

1.3 自動検出スクリプト

1.3.1 概要

自動検出サーバの処理を拡張するためのスクリプトを作成することができます。これにより、ホストとそのインタフェース検出に多くの処理をさせることができます。

システム内の情報を "検出" し、自動的にモニタリング (ネットワーク、プラグイン、WMI...) するということが基本的な考え方です。Oracle データベースのインスタンス、VMware VirtualCenter で管理されている新たな仮想マシンや、WebLogic アプリケーションサーバの新たなインスタンスの検出など、自動処理を完全にカスタマイズできます。実行したい処理を行うスクリプトやアプリケーションは開発でき、自動検出サーバを通してスケジュール実行することができます。

それぞれの自動検出スクリプトは、特定の処理を実行するものです。我々は、オープンソースで SnmpDevice というものを開発しました。このスクリプトは、/usr/share/pandora_server/util/plugin_reconserver/snmpdevices.pl にあります。

このシステムは、指定された IP アドレス範囲を探索し、応答があった場合 (SNMP コミュニティが必要です) に SNMP エージェントを作成します。そして、応答に応じていくつかの (SNMP) モジュールを自動作成します。各ホストは、以下の 4つの SNMP モジュールが作成されます。

  • SysUptime: システムの Uptime (システムが起動してからの秒数)
  • SysName: システムの名前
  • Local InReceives: 一秒間に受信したバイト数
  • Local OutRequests: 一秒間に送信したバイト数

そして、一つのホストのそれぞれのインタフェースには、3つの SNMP モジュールが作成されます。

  • Status: 状態 (稼働中かそうでないか)
  • Inbound bps: 一秒間にインタフェースが受信したバイト数
  • Outbound bps: 一秒間にインタフェースが受信したバイト数

1.3.2 利用例

このスクリプトは、Pandora FMS コンソールから、もしくは、シェルからの二通りで利用できます。

1.3.2.1 シェルでの利用

利用書式:

./snmpdevices.pl <task_id> <group_id> <create_incident_flag> <custom_field1> <custom_field2>

利用例:

./snmpdevices.pl 3 8 0 192.168.100.0/24 community2010

自動検出タスクの ID 3 を実行します。作成されたエージェントは、グループ ID 8 (データベース) に割り当てられます。3つ目の引数に 0 を指定することにより、インシデントの作成を無効にしています。192.168.100.0/24 のネットワーク、つまり、192.168.100.1 から 192.168.100.254 までを "community2000" というコミュニティでチェックします。

1.3.2.2 Pandora FMS コンソールでの利用

自動検出スクリプトを利用するには、まずは Pandora コンソールから サーバ管理(Manage servers) -> 自動検出スクリプト管理(Manage recon scripts) へ行きます。ここで、利用したいスクリプトをフルパスで一つ一つ追加します。

Recon script1.png

サンプルスクリプトを追加したら、引き続き自動検出タスクを作成します。自動検出タスクの作成フォームで "カスタムスクリプト(Custom script)" モードを選択し、実行サーバ、実行間隔、検出したエージェントを所属させるグループ、および、インシデントを作成するかどうかといった、通常の自動検出タスクと共通のパラメータを設定します。

それ以降は、利用したいスクリプト (この例では Snmpdevices) が要求する独自のパラメータを設定します。スクリプトフィールドの内容はスクリプトに渡されます。(4つまで)

作成済みのタスクの ID、グループの割り当て、インシデントを作成するかどうかのパラメータは、スクリプトに自動的に渡されます。さらに 4つのカスタマイズ可能なスクリプトフィールドがあります。この例では、2つ使っており、1つ目に対象のネットワーク、2つ目に SNMP コミュニティーを設定しています。

Recon script2.png

800px

2つのスクリプトフィールドを入力し、オプションでコメントを書くと、Snmpdevices のテストスクリプトを使った自動検出タスクが作成されます。自動検出が開始され、エージェントおよび前述のモジュールが作成されます。

1.3.3 SNMP L2 自動検出スクリプト

このスクリプトは、バージョン 5.1 以上にあり、レイヤー 2 (L2) ネットワークスキャンを実行するために SNMP に依存しています。ルータおよびスイッチでは、SNMP 経由でインタフェースや L2 情報を取得する必要があります。ホストは、L2 スキャンの後に traceroute でアクセスされます。

SNMP L2 スキャンを実行するには、カスタムスクリプト SNMP L2 Recon を選択し次のパラメータを入力して、新たな自動検出タスクを作成します。

  • ネットワーク(Network): スキャンするネットワークのカンマ区切りのリスト (例: 192.168.1.0/24,192.168.2.0/24)
  • コミュニティ(Community): SNMP コミュニティのカンマ区切りのリスト
  • ルータ(Router) (オプション): ネットワーク内のルータの IP アドレス。これは必須ではありませんが、ネットワークのスキャンが簡単になります。
  • オプションパラメータ(Optional parameter) (オプション): 全ネットワークインタフェースを対象にするには、-a を追加します。(デフォルトではアップしているインタフェースのみが対象です)

Snmp l2 recon task.png

検出したネットワークを表示するには、操作(Operation) -> ネットワーク表示(Network view) -> ネットワークマップ(Network map) へ行き、L2 ネットワークインタフェース(L2 network interfaces) をチェックします。

Snmp l2 network map.png

Template warning.png

ほとんどのホストが SNMP に応答しないとスキャンはとても遅くなります。それぞれの SNMP コミュニティで、それぞれのホストに対し、snmp_timeout に設定した秒で検出をタイムアウトし、snmp_check で指定した回数のリトライをします(ともに /etc/pandora/pandora_server.conf で設定されています)。デフォルト値で 2つの SNMP コミュニティで実行すると、SNMP に応答するホストが無い場合クラス C のネットワークで 30分の遅延が発生することになります(2コミュニティ x 1リトライ x 4秒 x 254ホスト)。スキャンを高速化するために、これらの値を小さくすることができますが、他の SNMP モジュールにも影響します。

 


1.3.4 WMI 自動検出スクリプト

このスクリプトは、WMI クエリの答えるホストをネットワークから検出し、デフォルトのモジュールを作成します。

WMI ネットワークスキャンを実行するには、カスタムスクリプト WMI Recon Script を選択し次のパラメータを設定して新たな自動検出タスクを作成します。

  • ネットワーク(Network): スキャンするネットワークのカンマ区切りのリスト (例: 192.168.1.0/24,192.168.2.0/24)
  • WMI認証(WMI auth): "ユーザ名%パスワード" という書式での WMI 認証トークンのカンマ区切りのリスト (例: Administrator%pass)

Wmi recon task.png