Pandora: Documentation ja: Operations

From Pandora FMS Wiki
Jump to: navigation, search

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

Contents

1 ソフトウエアエージェントを使ったモニタリング

1.1 エージェント設定

デフォルトでは、Pandora FMS エージェントはローカルで設定行います。つまりモニタリング対象のマシンで設定ファイルを編集することにより行います。

1.1.1 リモート設定

エンタープライズ版では、リモートでエージェントを設定する機能があります。これにより、設定ファイルの管理をサーバコンソールから統括して行うことができます。

設定は、<md5>.conf および <md5>.md5 という名前の 2つのファイルで行います。ここで、<md5> は、エージェント名のハッシュです。これらのファイルは、"/var/spool/pandora/data_in/conf" および、"/var/spool/pandora/data_in/md5" ディレクトリに配置されます。

これらのファイルは、プレーンテキストでコンソールから編集することができます。変更が行われると再生成されます。接続は、常にエージェントからサーバに向けて行われます。そのため、この機能はエージェントによって制御されます。

Xml file transfer

リモート設定を有効にするには、pandora_agent.conf ファイルで remote_config パラメータを 1 にする必要があります。変更を行うと、変更を認識した時点からエージェントの設定ファイルは無視されます。サーバから新たなバージョンがダウンロードされます。サーバが強制的にエージェントのローカル設定を取得するには、サーバから両方の設定ファイルを削除すると良いです。

1.2 共通設定パラメータ

Pandora FMS ソフトウエアエージェント の章に、エージェント設定に関する詳細説明があります。この章では、ソフトウエアエージェントの設定に利用する共通のパラメータについて説明します。

よく使われるパラメータは次の通りです。

  • server_ip: Pandora FMS サーバの IP アドレスです。
  • server_path: Pandora FMS サーバの incoming フォルダのパスです。デフォルトは、/var/spool/pandora/data_in です。
  • temporal: ソフトウエアエージェントのテンポラリフォルダです。デフォルトは、/var/spool/pandora/data_out です。
  • logfile: ソフトウエアエージェントのログファイルです。デフォルトは、/var/log/pandora/pandora_agent.log です。
  • interval: エージェントの実行間隔です。デフォルトは、300 です。
  • intensive_interval: 高頻度モジュールの実行間隔です。デフォルトは、300 です。
  • debug: デバッグモードを有効にします。デフォルトは 0 (無効)です。
  • agent_name: エージェント名です。デフォルトはホスト名が使われます。
  • server_port: tentacle サーバのポート番号です。デフォルトは、41121 です。
  • transfer_mode: ファイル転送モードです。デフォルトは、tentacle です。
  • remote_config: リモート設定を有効にします。デフォルトは 0 (無効)です。

UNIX 向け設定 での一般的なパラメータ設定例は次の通りです。

server_ip       192.168.1.1 
server_path     /var/spool/pandora/data_in 
temporal        /var/spool/pandora/data_out 
logfile         /var/log/pandora/pandora_agent.log 
interval        300 
debug           0 
agent_name      box01 
server_port     41121 
transfer_mode   tentacle 
remote_config    1 

Windows 向け設定 での一般的なパラメータ設定例は次の通りです。

server_ip       192.168.1.1 
server_path     /var/spool/pandora/data_in 
temporal        c:\program files\pandora_agent\temp
logfile         c:\program files\pandora_agent\pandora_agent.log 
interval        300 
debug           0 
agent_name      box01 
server_port     41121 
transfer_mode   tentacle 
remote_config   1

1.3 カスタムフィールド

カスタムフィールドは、エージェントの情報を追加する簡単な仕組みです。カスタムフィールドは、'リソース(Resources)' -> 'カスタムフィールド(Custom fields)' をクリックすると作成できます。

center|800px

カスタムフィールドを作るには、"フィールドの作成(Create field)" ボタンをクリックし、以下のフォームを入力します。

Custom fields2.png
  • 名前(Name): カスタムフィールド名。
  • 前面に表示(Display on front): これをチェックすると、カスタムフィールドは以下の画面ショットのようにエージェントの前面に表示されます。
Custom fields3.png

1.4 ソフトウエアエージェントでのモニタリング

ソフトウエアエージェントで収集されるデータは、モジュールと呼ばれる小さな情報単位になります。それぞれのモジュールは、一種類のデータを保持します。それぞれのモジュールの値は、モニタリングで取得された値です。一度エージェントが情報の送信を始めると、データはデータベース蓄えられ、アクセスできるようになります。

より詳細情報は、ソフトウエアエージェントインストールの章を参照してください。

Agent-monitoring.png

Pandora FMS ソフトウエアエージェントは、情報を得るために OS のコマンドを利用しています。Pandora FMS データサーバは、コマンドによって生成され、XML ファイルでサーバに送られたデータを処理します。これらのコマンドで返される情報を、モジュールと呼んでいます。

PandoraAgent logical schema.png

ソフトウエアエージェントが最初に実行されると、Tentacle、SSH、FTP 等を使って Pandora FMS データサーバのデータディレクトリに XML を送信します。データサーバは、このディレクトリを一定間隔ごとに確認し、ファイルがあった場合はそれを処理します。データファイルでは、XML の構成内にユニークなエージェント名を持っており Pandora FMS では大文字小文字の違いも区別されます。デフォルトでは、エージェントがデータベースに内場合、サーバはデータを受信したすべてのエージェントを自動的に作成します。同様に、エージェントが学習モードで追加されると、定義されていないモジュールがサーバにより自動的に作成されます。

Template warning.png

設定ファイルのエンコーディングはとても重要で、encoding パラメータに設定しているものと同じでなければいけません。エンコーディングを適切に設定することにより、受け取るデータが不正なエンコーディングになることを防ぎます。

 


1.4.1 モジュールの種類

モジュールにはいくつかの種類があり、主にソフトウエアエージェントからデータを取得するものと、ネットワークサーバによってデータを取得するネットワークモジュールの 2種類に分類できます。ソフトウエアエージェントによるものを "generic" として、ネットワークモジュールによるものを "remote" として定義します。

generic_data

数値データです。Pandora FMS エージェントモジュールから得られる数値 (整数および小数) を保存するのに利用します。

generic_data_inc

インクリメンタルな数値データです。前の値と現在の値の差分を間隔で割った値を保存します。このデータタイプは、'秒間の回数' をカウントするのに利用します。たとえば、秒間のログエントリー数、秒間受信バイト数、秒間のコネクション数などです。'inc' で終わるすべてのモジュールタイプが、インクリメンタルです。

generic_data_inc_abs

時間で割らない(絶対的な)インクリメンタル数値データです。前の値と現在の値の差分を保存します。このデータタイプは、'回数' をカウントするのに利用します。たとえば、ログのエントリー数、受信バイト数、コネクション数などです。'inc_abs' で終わるすべてのモジュールのタイプは、時間で値を割らないインクリメンタルです。

generic_proc

一般に "モニタ" 項目で使います。これはブーリアンデータです。値が 0 の場合は障害、0 より大きい場合は正常な状態を意味します。generic_proc がモニタと呼ばれるのは、内容の解釈やアラートの設定をするまでもなく、すでに状態が正常か異常かを示しているためです。これらの状態はエージェントビューに表示されます。0 であれば赤になり、0 より大きければ緑になります。"proc" で終わる全てのモジュールは、モニタです。

generic_data_string

文字列データ (テキスト) です。

async_data

非同期の数値データです。generic_data と同じですが非同期のデータで、変化したときのみ更新されます。非同期データは、いつデータを取得するかが定義されません。

async_string

非同期の文字データです。generic_string と同じですが非同期のデータで、変化したときのみ更新されます。データを取得したあとに、次の新たなデータの取得がいつになるかわからないような、ログやイベントをモニタするのに利用します。

async_proc

非同期のブーリアンデータです。generic_proc と同じですが非同期のデータで、変化したときのみ更新されます。

ソフトウエアエージェントは、インストールされたシステムのデータを送信するようにあらかじめ設定されています。設定されているのは次のデータです (バージョンにより異なります)。

  • CPU 情報
  • ディスクの空き容量
  • メモリの空き容量
  • プログラムやサービス状態のモニタリング

OS やその他環境によっては、ソフトウエアエージェントは、その他モジュールや異なる監視設定をする場合もあります。

これらすべての情報は、pandora_agent.conf にあります。このファイルは、GNU/Linux であれば、/etc/pandora に置かれており、Windows であればインストール時に指定したディレクトリ (C:\Program files\pandora_agent\ 等) にあります。

次に、いくつかのモジュールのデータについて説明します。

GNU/Linux における CPU 使用率

# CPU usage percentage (GNU/Linux)
module_begin
module_name cpu_user
module_type generic_data
module_interval 1
module_exec vmstat 1 2 | tail -1 | awk '{ print $13 }'
module_max 100
module_min 0
module_description User CPU Usage (%)
module_end

これは、generic_data のモジュールとして定義されており、結果を得るために、GNU/Linux のコンソールコマンドを実行 (module_exec) します。データの最大値は 100 で、最小値は 0 です。間隔 (module_interval) は、エージェント実行回数に対していつモジュールの実行するかを示します。1 以外に設定すると、エージェントの実行回数がこの値になったときのみモジュールを実行します。たとえば、エージェントの実行間隔が 300 秒で、モジュールの間隔を 3 に設定すると、モジュールは 3 * 300 = 900 秒ごとに実行されるようになります。

Windows における CPU 使用率

# CPU usage percentage (Windows)
module_begin
module_name CPUUse
module_type generic_data
module_cpuusage all
module_description CPU#0 usage
module_end

Windows と GNU/Linux のモジュールの違いがわかると思います。Windows では、CPU 使用率を得るための module_cpuusage all という内部エージェントコマンドがあります。module_cpuusage を使うことによって、CPU #0 の CPU 使用率を得ることができます。残りのフィールドはオプションです。

モジュールを追加するには、エージェントの設定およびモジュールの作成に関するドキュメントを参照してください。 変更を行ったら、エージェント設定ファイルを保存し、UNIX であればエージェントデーモン、Windows であればエージェントサービスを再起動してください。

1.4.2 モジュール作成インタフェース

コンソールからのローカルモジュールの作成は、リモートモジュール(の閾値、タイプ、グループなど)と同様に、フォームを利用して行います。設定データを指定するテキストボックスがあり、ソフトウエアエージェントの設定ファイルが表示されています。

Local module editor.png

このテキストボックスの近くには、2つのボタンがあります。一つは、基本設定の作成(create a basic configuration structure)で、もう一つは、データの正常性確認(check that the data is correct)です。この確認では、module_begin で始まり、module_end で終了、また正しいタイプと名前が設定されているかどうか、基本的なパラメータを確認します。他のパラメータの間違いは検出できません。

Local module editor basic.png
Local module editor check wrong.png
Local module editor check right.png

フィールド名とタイプの選択は、データ設定の module_name および module_type パラメータにリンクされています。 名前フィールドでモジュール名を変更すると、設定データ名が自動的に変更されます。 逆も同様です。同様に、タイプを選択するとデータ設定タイプが変更され、設定データにタイプを書くとメニューからそのタイプが自動的に選択されます。

ローカルコンポーネントからモジュールを変更すると、マクロを設定することができます。マクロがある場合、設定データは表示されなくなり、それぞれのマクロのフィールドに表示されます。この機能の詳細については、テンプレートとコンポーネントにて説明しています。

1.4.3 状態にもとづくモニタリング

Pandora FMS ソフトウエアエージェントは、モジュールの値に応じたスクリプトの実行をサポートしています。また、モジュールを実行する前に状態を評価する機能もあります。ここでは、両方の機能についてサンプルと共に説明します。

1.4.3.1 事後処理

module_condition パラメータにて、モジュールの実行の事後処理を定義します。モジュールから返される値にもとづいて実行されるコマンドを定義します。設定ファイルの例を次に示します。

module_begin
module_name CPU_Usage_Condition
module_type generic_data
module_exec get_cpu_usage.pl
module_condition < 20 add_processes.sh
module_end

一つのモジュールに複数の事後処理を定義することもできます。例えば次の通りです。

module_begin
module_name CPU_Usage_Condition
module_type generic_data
module_exec get_cpu_usage.pl
module_condition (90, 100) remove_processes.sh
module_condition < 20 add_processes.sh
module_end

その他の例:

モジュールのデータが 20未満になったら場合に実行:

module_begin
module_name CPU_Usage_Condition
module_type generic_data
module_exec get_cpu_usage.pl
module_condition < 20 add_processes.sh
module_end

スクリプト get_cpu_usage.pl が 18 を返したら、ソフトウエアエージェントはスクリプト add_proceses.sh を実行し、そうでなければ実行しません。

2つの事後処理を実行:

module_begin
module_name CPU_Usage_Condition
module_type generic_data
module_exec get_cpu_usage.pl
module_condition < 10 start_new_server.sh
module_condition < 20 add_processes.sh
module_end

モジュールが 15を返した場合、ソフトウエアエージェントは、スクリプト add_processes.sh のみを実行します。値が 6の場合は、start_new_server.sh と add_processes.sh の両方のスクリプトを実行します。

1.4.3.2 事前処理

module_precondition パラメータにて、モジュール実行前の事前処理を定義します。この事前処理により、ソフトウエアエージェントはモジュールを実行するかどうか決めます。設定ファイル例は次の通りです。

module_begin
module_name CPU_Usage
module_type generic_data
module_exec get_cpu_usage.pl
module_precondition > 10 number_active_processes.sh
module_end

同じモジュールに複数の事前処理を定義することもできます。例えば、次の通りです。

module_begin
module_name CPU_Usage
module_type generic_data
module_exec get_cpu_usage.pl
module_precondition > 10 number_active_processes.sh
module_precondition = 1 important_service_enabled.sh
module_end

いくつかの例:

事前処理の結果が 10を超えたときのみモジュールを実行:

module_begin
module_name CPU_Usage
module_type generic_data
module_exec get_cpu_usage.pl
module_precondition > 10 number_active_processes.sh
module_end

この例では、ソフトウエアエージェントで最初に number_active_processes.sh を実行します。もし値が 10より大きければ、モジュールが実行されます。もし値が 10より小さければモジュールは実行されません。

2つの事前処理の条件が満たされた時のみモジュールを実行:

module_begin
module_name CPU_Usage
module_type generic_data
module_exec get_cpu_usage.pl
module_precondition > 10 number_active_processes.sh
module_precondition = 1 important_service_enabled.sh
module_end

この例では、2つの事前処理があります。すべての事前処理の結果の条件が満たされないとモジュールは実行されません。number_active_processes.sh が 10より大きい値を返し、かつ、important_service_enabled.sh が 1を返す時のみモジュールが実行されます。

1.4.4 高頻度モニタリング

いくつかのモジュールにおけるある決まった値は他と比べてとても重要なことがあります。例えば、システムのサービスをモニタリングしている場合、サービスがダウンしたらなるべく早く通知して欲しいと思いますが、10秒ごとにサービスが起動することは通知して欲しくありません。

そのために、高頻度モジュールがあります。高頻度モジュールは、高頻度状態を満たしている間はintensive_interval で指定した秒間隔で動作します。残りの時間は、他のモジュールと同様に、interval で指定した秒間隔で動作します。

例えば、10秒間隔で sshd のサービスが動作しているかをチェックしたいが、サービスが正常な場合には 10分ごとに通知が欲しい場合は、エージェントを次のように設定します。

intensive_interval 10
interval 600
module_begin
module_name SSH Daemon
module_type generic_data
module exec ps aux | grep sshd | grep -v grep | wc -l
module_intensive_condition = 0
module_end

サービスがダウンした場合 10秒で通知が行われますが、サービスが起動したときは次の 10分で通知がされます。

これにより、Pandora FMS データベースの使用量を節約できます。

1.4.5 指定時間モニタリング

ソフトウエアエージェントは、簡単にモジュールを指定時間に実行する設定ができます。書式は crontab http://ja.wikipedia.org/wiki/Cron と同じです。モジュールの設定例は次の通りです。

module_begin
module_name crontab
module_type generic_data
module_exec script.sh
module_crontab * 12-15 * * 1
module_end

この例では、モジュールは毎月曜の 12 から 15時の間に 一度だけ実行 されます。

時間内全て にモジュールを実行したい場合は、module_cron_interval オプションを 0 に設定する必要があります。

module_begin
module_name crontab
module_type generic_data
module_exec script.sh
module_crontab * 12-15 * * 1
module_cron_interval 0
module_end

モジュールを毎時 10分に実行したい場合は、次のようにします。

module_begin
module_name crontab
module_type generic_data
module_exec script.sh
module_crontab 10 * * * *
module_cron_interval 0
module_end

1.4.6 Windows プラットフォームにおけるモニタリング詳細

The software agent for Windows platforms has specific features for this platform to make monitoring easier. Following these feature are explained with some examples.

Windows プラットフォームのソフトウエアエージェントは、モニタリングを簡単にするための特有の機能があります。以下にいくつかの例とともに、機能の説明をします。

1.4.6.1 プロセスモニタリングと、プロセスウォッチドック

1.4.6.1.1 プロセスモニタリング

module_proc パラメータは、指定した名前のプロセスがそのマシンで動いているかどうかをチェックします。モジュール定義は次の通りです。

module_begin
module_name CMDProcess
module_type generic_proc
module_proc cmd.exe
module_description Process Command line
module_end

プロセス名にスペースが含まれる場合は、«" "»を使わないでください。プロセス名は、Windows のタスクマネージャー(taskmngr)で表示されるものと同じで、拡張子 .exe を含んでいます。大文字、小文字を正しく設定することが重要です。

プロセスが動作していない時、すぐにソフトウエアエージェントから通知が欲しい場合は、module_async yes のパラメータを設定します。モジュールの設定例は次の通りです。

module_begin
module_name CMDProcess
module_type generic_proc
module_proc cmd.exe
module_async yes
module_description Process Command line
module_end
1.4.6.1.2 プロセスウォッチドック

Windows のソフトウエアエージェントのウォッチドック機能は、プロセスがダウンしたときに再起動することができます。ウォッチドックは、モジュールが非同期の場合にのみ動作します。

ウォッチドックモジュールの設定例を以下に示します。

module_begin
module_name Notepad
module_type generic_data
module_proc notepad.exe
module_description Notepad
module_async yes
module_watchdog yes
module_start_command c:\windows\notepad.exe
module_startdelay 3000
module_retrydelay 2000
module_retries 5
module_end

上記の例では、ウォッチドックが notepad.exe プロセスがダウンしたときは常に c:\windows\notepad.exe を実行しそれを再起動します。また、再起動のリトライは 3秒間隔で 5回まで実施し、1回のタイムアウトは 2秒という設定です。

1.4.6.2 サービスモニタリングと、サービスウォッチドック

1.4.6.2.1 サービスモニタリング

module_service パラメータは、指定したサービスがマシンで動作しているかどうかをチェックします。モジュールの設定例を以下に示します。

module_begin
module_name Service_Dhcp
module_type generic_proc
module_service Dhcp
module_description Service DHCP Client
module_end

サービス名にスペースが含まれる場合、«" "» は使わないようにしてください。サービス名を見つけるには、Windows サービスマネージャのサービス名フィールドを見てください。大文字、小文字の確認が重要です

サービスがダウンしたときにソフトウエアエージェントがすぐに通知して欲しい場合は、module_async yes を追加する必要があります。モジュールの設定例を以下に示します。

module_begin
module_name Service_Dhcp
module_type generic_proc
module_service Dhcp
module_description Service DHCP Client
module_async yes
module_end
1.4.6.2.2 サービスウォッチドック

プロセスと同様に、ダウンしたサービスを再起動できるウォッチドックモードがあります。ウォッチドックを使ったモジュール定義例は次の通りです。

module_begin
module_name ServiceSched
module_type generic_proc
module_service Schedule
module_description Service Task scheduler
module_async yes
module_watchdog yes
module_end

ウォッチドックの定義には、特別なパラメータは必要ありません。サービスの定義内にあるためです。

1.4.6.3 基本リソースのモニタリング

この項では、Windows マシンの基本的な値をモニタリングする方法について説明します。

1.4.6.3.1 CPU のモニタリング

CPU をモニタするには、CPU 使用率を返す module_cpuusage パラメータを利用します。

次のような設定で、CPU の ID を元に CPU をモニタすることができます。

module_begin
module_name CPU_1
module_type generic_data
module_cpuusage 1
module_description CPU usage for CPU 1
module_end

また、次のように、すべての CPU の平均使用率をモニタすることもできます。

module_begin
module_name CPU Usage
module_type generic_data
module_cpuusage all
module_description CPU Usage for all system
module_end
1.4.6.3.2 メモリのモニタリング

メモリをモニタするには、システムの空きメモリ容量を返す module_freememoryと、空き率をパーセンテージで返す module_freepercentmemory の 2つのパラメータを利用できます。

module_freememory を使ったモジュールの例を以下に示します。

module_begin
module_name FreeMemory
module_type generic_data
module_freememory
module_description Non-used memory on system
module_end

module_freepercentmemory を使ったモジュールの例を以下に示します。

module_begin
module_name FreePercentMemory
module_type generic_data
module_freepercentmemory
module_end
1.4.6.3.3 ディスクのモニタリング

ディスクスペースをモニタするには、空き容量を返す module_freedisk と、空き率をパーセンテージで返す module_freepercentdisk の 2つのパラメータを利用できます。両方のパラメータには、モニタするドライブ名の指定が必要で、":" を忘れないようにしてください。

module_freedisk を使ったモジュールの設定例を以下に示します。

module_begin
module_name FreeDisk
module_type generic_data
module_freedisk C:
module_end

module_freepercentdisk を使ったモジュールの設定例を以下に示します。

module_begin
module_name FreePercentDisk
module_type generic_data
module_freepercentdisk C:
module_end

1.4.6.4 WMI クエリ

Pandora FMS のソフトウエアエージェントは、システムに関連した情報や外部の情報を保持するのに使われる共通の技術である WMI クエリおよび ODBC 接続を使って情報を取得することができます。

1.4.6.4.1 WMI クエリ

module_wmiquery パラメータを使って、ソフトウエアエージェントはローカルで WMI クエリを実行することができます。クエリを実行するには、実行するクエリを module_wmiquery パラメータで設定し、取得したい情報を持つカラムを module_wmicolumn で指定します。

例えば、次の設定ではインストールされているサービス一覧を取得できます。

module_begin
module_name Services
module_type generic_data_string
module_wmiquery Select Name from Win32_Service
module_wmicolumn Name
module_end

WMI を使って、CPU ロードも取得できます。

module_begin
module_name CPU_Load
module_type generic_data
module_wmiquery SELECT LoadPercentage FROM Win32_Processor
module_wmicolumn LoadPercentage
module_end

1.4.7 ソフトウエアエージェントでのリモートチェック

エージェントによるリモートチェックは、セキュリティ等の特別な理由のある複雑なネットワークを簡単にモニタリングできます。この章では、ソフトウエアエージェントのこの機能の使い方について説明します。

1.4.7.1 ICMP チェック

ICMP (ping) チェックは、機器がネットワークに接続されているかを確認するのにとても便利です。一つのソフトウエアエージェントで、ネットワーク全体の状態をモニタできます。

Unix

UNIX のソフトウエアエージェントを使って ping チェックを行うモジュールを作成するには、システムのコマンドを利用します。モジュールの定義は次のようになります。

module_begin
module_name Ping
module_type generic_proc
module_exec ping -c 1 192.168.100.54 >/dev/null 2>&1; if [ $? == 0 ]; then echo 1; else echo 0; fi
module_end

このモジュールの例では、192.168.100.54 宛の ping チェックを実行します。他のホストをチェックしたければ、IP アドレスを変更するだけです。

Windows

Windows のソフトウエアエージェントには ping チェックを設定するためのパラメータがあり、次の通りです。

  • module_ping_count x: 送信する ECHO_REQUEST パケット数 (デフォルトは 1)
  • module_ping_timeout x: 秒単位のタイムアウト値 (デフォルトは 1)
  • module_advanced_options: ping.exe のオプションパラメータ

モジュールの設定例を次に示します。

module_begin
module_name Ping
module_type generic_proc
module_ping 192.168.100.54
module_ping_count 2
module_ping_timeout 5
module_end

この例では、Unix の場合と同じチェックを行います。ただし、Windows 環境でのソフトウエアエージェントです。

1.4.7.2 TCP チェック

TCP チェックは、ホストのポートが開いているかを確認するのに便利です。アプリケーションがネットワーク上で応答するかどうかを確認することができます。

Unix

Unix のソフトウエアエージェントでは、次のようなモジュール設定にて TCP チェックを実行します。

module_begin
module_name PortOpen
module_type generic_proc
module_exec nmap 192.168.100.54 -p 80 | grep open > /dev/null 2>&1; echo $?; if [ $? == 0 ]; then echo 1; else echo 0; fi
module_timeout 5
module_end

このモジュールでは、ホスト 192.168.100.54 の 80番ポートが開いているかどうかをチェックします。

Windows

Windows のソフトウエアエージェントを使っている場合は、TCP チェックを設定するためのパラメータがあります。パラメータは次の通りです。

  • module_tcpcheck: チェックするホスト
  • module_port: チェックするポート番号
  • module_timeout: チェックのタイムアウト値

モジュールの設定例を以下に示します。

module_begin
module_name TcpCheck
module_type generic_proc
module_tcpcheck 192.168.100.54
module_port 80
module_timeout 5
module_end

このモジュールも同様に、192.168.100.54 の 80番ポートに対してチェックを行います。

1.4.7.3 SNMP チェック

SNMP チェックは、一般的にネットワークデバイスのインタフェースのステータス、送受信トラフィックなどをチェックするのに利用します。

Unix

Unix のソフトウエアエージェントを利用している場合は、次のように snmpget コマンドを使ったモジュールを作成します。

module_begin
module_name SNMP get
module_type generic_data
module_exec snmpget 192.168.100.54 -v 1 -c public .1.3.6.1.2.1.2.2.1.1.148 | awk '{print $4}'
module_end

このモジュールは、ホスト 192.168.100.54 の OID .1.3.6.1.2.1.2.2.1.1.148 の値を返します。

Windows

Windows のソフトウエアエージェントでは、モジュールを設定するための次のパラメータがあります。

  • module_snmpversion [1,2c,3]: SNMP バージョン (デフォルトは 1)
  • module_snmp_community <community>: SNMP コミュニティ(デフォルトは public)
  • module_snmp_agent <host>: モニタ対象のホスト
  • module_snmp_oid <oid>: OID.
  • module_advanced_options: snmpget.exe の拡張オプション

モジュールの設定例を以下に示します。

module_begin
module_name SNMP get
module_type generic_data
module_snmpget
module_snmpversion 1
module_snmp_community public
module_snmp_agent 192.168.100.54
module_snmp_oid .1.3.6.1.2.1.2.2.1.1.148
module_end

このモジュールは、Unix のソフトウエアエージェントと同じ動作をします。

1.4.8 プロキシモード

Template warning.png

Linux/Unix システムで、エージェントのプロキシモードを利用するためには、エージェントを root 以外のユーザで実行する必要があります。そのため、Pandora FMS エージェントのカスタムインストールが必要です。カスタムインストールの詳細については、エージェントのカスタムインストールを参照してください。

 


Pandora FMS ソフトウエアエージェントには、エージェントから Pandora FMS サーバへの通信をプロキシするする、プロキシモードがあります。プロキシモードを有効にしたソフトウエアエージェントは、モニタリング処理も実行可能です。

Proxy-mode.png

プロキシモードは、1台のマシンのみ Pandora FMS サーバと通信できないといったネットワークの場合にとても便利です。この場合、すべてのマシンにインストールされたソフトウエアエージェントは直接 Pandora FMS サーバへは通信できず、XML ファイルをプロキシとして動作しているエージェントに送ります。プロキシはそれを Pandora FMS サーバへ送信します。

プロキシモードでは、XML ファイル送信をプロキシすることに加えて、リモート設定 および ファイルコレクション の機能もサポートしています。

プロキシモードを有効にするには、ソフトウエアエージェントにて次のパラメータを設定します。

  • server_ip: Pandora FMS サーバの IP アドレスです。プロキシモードが有効な場合、172.0.0.1, localhost, 0.0.0.0 といったアドレスは設定できません
  • proxy_mode: 1 に設定するとプロキシモードが有効になります。デフォルトは 0 で、無効です。
  • proxy_max_connection: プロキシへの最大接続数です。デフォルトは 10です。
  • proxy_timeout: プロキシのタイムアウトです。デフォルトは 1秒です。

設定例を以下に示します。

server_ip 192.168.100.230
proxy_mode 1
proxy_max_connection 20
proxy_timeout 3

ソフトウエアエージェントの接続を中継するには、ソフトウエアエージェントの設定で接続先の Pandora FMS サーバのアドレスとしてプロキシモードのエージェントのアドレスを指定します。例えば次の通りです。

プロキシモードが有効なエージェントの IP アドレスが、192.168.100.24 とします。

直接 Pandora FMS サーバへ接続できないソフトウエアエージェントでは、server_ip パラメータを次のように設定します。

server_ip 192.168.100.24

この設定により、Pandora FMS サーバと直接通信ができないソフトウエアエージェントが、プロキシモードの他のソフトウエアエージェントを経由して通信できるようになります。

1.4.9 ブローカーモード

ソフトウエアエージェントには、複数のソフトウエアエージェントがインストールされているかのように一つのエージェントを設定し、モニターするブローカーモードがあります。

Modo-broker.png

ブローカーモードを有効にしたソフトウエアエージェントは、メインの設定ファイルに似たそれぞれのブローカーを定義する補助的な設定ファイルを持ちます。これにより、ソフトウエアエージェントは、同一のマシンに複数のソフトウエアエージェントをインストールするのと同じように動作します。つまり、それぞれのブローカーは、それぞれがソフトウエアエージェントと同じように動作します。この機能は一つのソフトウエアエージェントで複数のデバイスをリモートでモニタリングするのにとても便利です。これにより、異なる設定ファイルで複数のデバイスをモニタリングできます。しかしながら、エージェントのインストールは 1つだけです。

ブローカーモードのメインの機能は次の通りです。

  • ローカルのデータを他のエージェントとして送信します。異なるソフトウエアの状態を異なるエージェントとしてモニタリングするのに便利です。
  • リモートチェックを行ったデータを、ソフトウエアエージェントがインストールされているマシンから送られたかのように送信します。

ブローカーを設定するには、broker_agent <ブローカー名> という設定行を追加するだけです。

broker_agent dev_1
broker_agent dev_2

ブローカーを設定したら、オリジナルのソフトウエアエージェントの設定と同じような内容で、エージェント名の設定が異なる dev_1.conf および 'dev_2.conf ファイルを作成します。dev_1.conf および dev_2.conf の設定ファイルでのモジュール追加、削除をすることで、ブローカーの設定を変更します。

Pandora FMS ウェブコンソールで、プローカーが表示され、他のエージェントと同じように管理できます。2つのブローカーでソフトウエアエージェントをインストールしていれば、ウェブコンソールでは、異なる 3つのエージェントでそれぞれのモジュールや設定が参照できることを意味します。

注意: ブローカーエージェントインスタンスは、ファイルコレクションを利用できません。コレクションを利用したい場合は、インスタンスのコレクションからファイルの "実行" ができますが、インスタンスではなく "メイン" エージェントで配布する必要があります。

注意: ブローカーエージェントが有効な場合、実行中にメモリ内にデータを保持しているモジュール (module_logevent と Windows における module_regexp) は動作しません。

1.4.9.1 利用例

1.4.9.1.1 異なるエージェントとしてのローカルデータベースのモニタリング

マシンの基本的な情報(CPU、メモリ、ディスク)および、インストールされているデータベースの情報を分けてモニタリングしたいとします。

このモニタリングを行うには次のような手段をとります。

  • インストールしたソフトウエアエージェント: CPU、メモリ、ディスクをモニタします。
  • データベース用のブローカー: データベース内の状態をモニタします。

これを行うには、ソフトウエアエージェントを CPU、メモリ、ディスクをモニタするマシンにインストールします。ソフトウエアエージェントの設定で次の行を追加します。

broker_agent DBApp

この設定を追加することにより、DBApp というブローカーエージェントを作成します。それにより、dbapp.conf という設定ファイルができます。この設定ファイルには、データベースの状態をチェックするモジュールを追加します。

module_begin
module_name Num Users
module_type generic_data
module_exec get_db_users.pl
module_end

module_begin
module_name Num slows queries
module_type generic_data
module_exec get_db_slows_queries.pl
module_end

これにより、Pandora ウェブコンソールに 2つのエージェントが現れます。一つはマシン名で CPU、メモリ、ディスクのモジュールがあり、もう一つは、DBApp という名前で Num Users および Num slow queries というモジュールがあります。

1.4.9.1.2 ブローカーを使ったリモートデバイスのモニタリング

この例では、Windows マシンにソフトウエアエージェントをインストールし、(CPU、メモリ、ディスクを)モニタリングしています。また、エージェントのインストールなしに 192.168.100.54 の IP を持ったルータをモニタリングしたいとします。この問題を解決するためにブローカーを利用できます。

次の設定で、ブローカーを作成します。

broker_agent routerFloor5

これにより、routerFloor5 という名のブローカーエージェントを作成します。ソフトウエアエージェントが Windows マシンにインストールされているので、Windows のソフトウエアエージェントの機能で ping および snmp でルータをモニタできます。それには、routerFloor5.conf ファイルに次の設定を行います。

module_begin
module_name Ping
module_type generic_proc
module_ping 192.168.100.54
module_ping_count 2
module_ping_timeout 500
module_end

module_begin
module_name Eth 1 up
module_type generic_data
module_snmpget
module_snmpversion 1
module_snmp_community public
module_snmp_agent 192.168.100.54
module_snmp_oid .1.3.6.1.2.1.2.2.1.1.1
module_end

module_begin
module_name Eth 2 up
module_type generic_data
module_snmpget
module_snmpversion 1
module_snmp_community public
module_snmp_agent 192.168.100.54
module_snmp_oid .1.3.6.1.2.1.2.2.1.1.2
module_end

この例では、Pandora FMS のウェブコンソールには 2つのエージェントが表示されます。一つは CPU、メモリ、ディスクのモジュールを持った Windows マシン、もう一つは、Ping、Eth 1 up、Eth 2 up というモジュールを持った routerFloor5 です。

1.4.9.1.3 直接通信できないネットワークのリモートモニタリング

デバイスをリモートからモニタする必要があるが、Pandora FMS のリモートサーバがそれらに直接通信できない場合があります。

Broker example no access.png


この例では、本社からある会社のサイトのデバイスをリモートからモニタする必要があるとします。Pandora FMS サーバは本社にあり、他の会社のサイトに VPN で接続しています。何らかの制限により Pandora のリモートサーバはリモートでアクセスできません。会社のサイトをモニタリングするには、ブローカーモードを使います。ソフトウエアエージェントは、異なるデバイスとして Pandora サーバに XML を送信できます。

ソフトウエアエージェントの設定ファイルでは、モニタするデバイスの数だけブローカーを追加します。設定例は次の通りです。

broker_agent device_1
broker_agent device_2
broker_agent device_3
broker_agent device_4
...

ブローカーが作成されると、それぞれのデバイスのモニタリングをそれぞれのブローカーの設定ファイルで設定できます。例えば、Windows マシンで、device_1 の設定は次の通りです。

module_begin
module_name Ping
module_type generic_proc
module_ping 192.168.100.54
module_ping_count 2
module_ping_timeout 500
module_end

module_begin
module_name CPU_Load
module_type generic_data
module_wmiquery SELECT LoadPercentage FROM Win32_Processor
module_wmicolumn LoadPercentage
module_end

module_begin
module_name Mem_Free
module_type generic_data
module_wmiquery SELECT LoadPercentage FROM Win32_Memory
module_wmicolumn FreeMemory
module_end

module_begin
module_name Disk_Free
module_type generic_data
module_wmiquery SELECT LoadPercentage FROM Win32_Disk
module_wmicolumn FreeSpace
module_end

この設定で、異なる会社のサイト間で通信に制限があったとしても、リモート設定機能を利用でき、また、モニタした情報を Pandora FMS サーバへ送信することができます。

1.4.9.1.4 ブローカーを使ったモニタリング負荷分散

ブローカーモードは、複数のネットワークでモニタリングの負荷を分散するのにとても便利です。

Broker scalation example.png


この例では、A から Z の複数のネットワークがあり、それぞれ 1000のデバイスがあります。Pandora FMS のリモートサーバの許容量は、役 2000エージェントです。そのため、負荷分散のためにブローカーモードでソフトウエアエージェントを利用することにします。ブローカーモードを有効にしたソフトウエアエージェントは、リモートでネットワークから全てのデバイスをモニタし、データを XML で Pandora FMS の中央サーバへ送ります。

それぞれのネットワークに、ブローカーモードを有効にしたエージェントがあります。モニタするデバイスの分だけブローカーを作成します。ソフトウエアエージェントの Broker_Agent_Net_A の設定は次のようになります。

broker_agent device_1
broker_agent device_2
broker_agent device_3
broker_agent device_4
...

さらに、それぞれのブローカーには、モニタするデバイスのモジュールを追加します。例えば、ブローカー device_1 はルータで、次のような設定です。

module_begin
module_name Ping
module_type generic_proc
module_ping 192.168.100.54
module_ping_count 2
module_ping_timeout 500
module_end

module_begin
module_name Eth 1 up
module_type generic_data
module_snmpget
module_snmpversion 1
module_snmp_community public
module_snmp_agent 192.168.100.54
module_snmp_oid .1.3.6.1.2.1.2.2.1.1.1
module_end

module_begin
module_name Eth 2 up
module_type generic_data
module_snmpget
module_snmpversion 1
module_snmp_community public
module_snmp_agent 192.168.100.54
module_snmp_oid .1.3.6.1.2.1.2.2.1.1.2
module_end

他の例として、ブローカー device_2 は次のようなモジュールで Windows マシンをモニタします。

module_begin
module_name Ping
module_type generic_proc
module_ping 192.168.100.54
module_ping_count 2
module_ping_timeout 500
module_end

module_begin
module_name CPU_Load
module_type generic_data
module_wmiquery SELECT LoadPercentage FROM Win32_Processor
module_wmicolumn LoadPercentage
module_end

module_begin
module_name Mem_Free
module_type generic_data
module_wmiquery SELECT LoadPercentage FROM Win32_Memory
module_wmicolumn FreeMemory
module_end

module_begin
module_name Disk_Free
module_type generic_data
module_wmiquery SELECT LoadPercentage FROM Win32_Disk
module_wmicolumn FreeSpace
module_end

ソフトウエアエージェントをブローカーモードを有効にして使うことで、数千のデバイスからのデータを簡単に負荷分散して収集することができます。

1.4.10 ソフトウエアエージェントを使ったインベントリ

Pandora FMS ソフトウエアエージェントは、ハードウエアおよびソフトウエアのインベントリの機能をサポートします。インベントリシステムは、企業のサーバで使われている CPU、拡張カード、メモリ、パッチ、ソフトウエアなどの情報を取得することができます。また、インベントリに変化が発生したときにアラートを上げることもできます。例えば、ディスクを交換したり、アプリケーションが削除されたときです。

より詳細の情報は、ソフトウエアエージェントによるローカルインベントリを参照してください。

1.4.11 UDP リモートコマンド

1.4.11.1 エージェントからのオンデマンドでの情報提供

バージョン 3.2 以前は、リモートのソフトウエアエージェントに情報送信を要求する手段はなく、実行間隔ごとにエージェントが情報を送ってくるのを待つしかありませんでした。Windows のエージェント 3.0 には、あまり知られていない機能として、外部からの要求でサーバへ強制的に情報を提供したり間隔を更新させることができる "UDP サーバ" 機能があります。

バージョン 3.2 では、同様の機能を REFRESH AGENT として UNIX エージェントにも実装しました。また、それを簡単にするために、デフォルトのアラートテンプレートとコマンドを加えています。コンソールからの要求を受けて、実行間隔を待たずにその場でデータを送信するように、エージェント (Windows および UNIX) を設定することができます。

この機能はとてもシンプルです。最初に行う必要があるのは、エージェント (Windows または Linux) が特定の UDP ポートで、特定の IP アドレス (0.0.0.0 を指定すると任意の接続元を許可します) からの接続を受け付けるように設定することです。Windows では、リモートコマンドで実行するものを設定することもできます。UNIX では、(現時点では) "REFRESH AGENT" のみをサポートしています。エージェントは、実行間隔によらず、すぐにチェックを実行します。

以下に、Unix ソフトウエアエージェント 3.2 での UDP サーバ設定の例を示します。

udp_server 1
udp_server_port 41122
udp_server_auth_address 0.0.0.0

"udp_server" オプションに、1 を設定すると有効になり、0 を設定すると無効になります。ソース IP アドレスに 0.0.0.0 を設定すると、任意のアドレスからの接続を受け付けます。

以下の例は、Windows ソフトウエアエージェント 3.x の UDP サーバ設定例です。

udp_server 1
udp_server_port 41122
udp_server_auth_address 192.168.1.23

設定方法は同じです。この例では、接続を受け付ける IP アドレスとして、192.168.1.23 を指定しています。

Pandora FMS サーバには、エージェントに要求を送信するスクリプトがあります。デフォルトのコマンドを利用できるように用意しています。このスクリプトは Perl のスクリプトで、エージェントの UDP サーバと通信しコマンドを送信する小さなクライアントとして動作します。

Remote agent command.png

また、エージェントに手動でアラートを割り当てるためのデフォルトのアラートテンプレートを用意しています。つまり、アラートは自動的には発生しません。アラートコマンドを強制実行するには、エージェントのメインのビューで丸いボタンをクリックします。

Alert template manual.png

リモートエージェントにコマンドを発行する、"Restart agent" というデフォルトのアラートアクションを作成しています。このアクションは、エージェントのメイン IP アドレス、UDP サーバのデフォルトポート (41122/UDP) に接続し、REFRESH AGENT コマンドを実行します。

Agent restart action.png

ソフトウエアエージェントのリモートリフレッシュオプションを有効にする手順を以下に示します。

1. ソフトウエアエージェント (Unix または Windows) の設定ファイルのオプションを設定します。接続を受け付ける IP アドレス (Pandora FMS サーバが NAT 配下にいる場合など) に注意してください。0.0.0.0 を指定すると、すべての IP アドレスからの接続を受け付けます。

2. ソフトウエアエージェントを再起動します。

3. Pandora FMS コンソールで、エージェントに IP アドレスを設定する必要があります。アラートアクションは、リモートシステムで動作しているソフトウエアエージェントに接続するために IP アドレスを利用します。

4. 以下の画面ショットを参考に、エージェントの任意のモジュール (どれでも構いません) にアラートを設定します。

Alert restart combinationsettings.png

5. 以上で、設定したアラートの左にある丸い緑のボタンをクリックすることにより、メインビューからエージェントを強制リフレッシュする準備が整いました。

Agent refresh button.png

実行間隔を待たずにエージェントから情報を取得したい場合は、ボタンをクリックして数秒待ちます。エージェントはチェックを強制実行し、XML が Pandora FMS サーバに転送され処理されます。システムの負荷により、1~5秒程度で処理され、コンソールに表示されます。

1.4.11.2 カスタムリモートコマンド

エージェントのリフレッシュコマンドとは別に、Pandora サーバからの要求によりエージェントでカスタムアクションを実行することができます。

その場合は、pandora_agent.conf で以下のように udp サーバを有効化するのに加えて若干設定を行います。

udp_server 1
udp_server_port 41122
udp_server_auth_address <server IP>

次のように、実行したいカスタムコマンドごとに 1行を追加します。

process_nameofthecommand_start <command>

例えば、sshd サービスを起動させるカスタムコマンドを追加したい場合は、次のような行を追加します。

process_sshdproc_start /etc/init.d/sshd start

作成したリモートコマンドごとに、Pandora コンソールで新たなアラートアクションを作成する必要があります。すでに udp でコマンドを送信する設定がされている "Remote agent control" アクションをコピーすると良いでしょう。フィールド1 に、"START PROCESS sshdproc" を設定します。 sshd サービスを起動させたいエージェントで、新たなアラートアクションで新たな手動アラートを設定する必要があるだけです。これにより、手動でアラートを実行することにより、起動コマンドを発行することができます。

Info.png

スクリプトの実行順序も作成することができます。これで、"アラートの強制" をクリックすることにより、さまざまなリモートアクションをリモートエージェントで実行することができます。

 


1.4.12 ソフトウエアエージェントプラグインの利用

エージェントプラグインは、ソフトウエアエージェントにより実行され、いくつかの情報 (モジュール) をレポートします。それぞれのプラグインは異なる動きをするため、それを利用する前に動作確認をしてください。Pandora FMS のデフォルトインストールでは、いくつかのプラグインが含まれています。もちろん、UNIX エージェントと Windows エージェントでは、同じような動作をするものでも異なるプラグインです。

1.4.12.1 Windows システム

バージョン 3.2 の Windows エージェントには次のプラグインが含まれています。

  • df.vbs: ディスクの空きをバイト単位で返します。システムにあるそれぞれのハードディスクの情報を異なるモジュールで返します。特定のドライブのみの情報を得たい場合は、module_plugin の後にパラメータを指定するのみです。
  • df_percent.vbs: 上記のプラグインと似ていますが、空きを % で返します。"DiskFree_C" といった名前のモジュールを生成します。
  • logevent_log4x.vbs: イベントログを読み、log4x データを生成します。
  • ps.vbs: プロセスが動作しているかどうか、プロセス名を確認します。例えば、"iexplorer.exe mucommand.exe other.exe" を実行した場合、3つのプロセスをチェックし、それぞれ異なるモジュールでプロセスの生死状態を返します。

Windows では、全てのデフォルトプラグインは VBScript で書かれています。それを実行するには、コンソールで VBScript を実行できるインタプリターが必要です。

以下に、上記のプラグインの利用例を示します。

module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\logevent_log4x.vbs" Aplicacion System 300

module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\df.vbs"

module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\ps.vbs" iexplore.exe myapp.exe

1.4.12.2 Unix システム

バージョン 3.2 の Unix エージェントでは、以下のプラグインが付属しています。

  • files_indir: このプラグインは、対象ディレクトリの内容を返します。例えば、"/tmp" であれば、前回の実行時と同じ数のファイルがある場合に 1 を返す "FS_/tmp/" (boolean) というモジュールと、ディレクトリ内のファイル数を返す "NumFiles_FS_/tmp/" というモジュールの 2つのモジュールを返します。
  • grep_log: 一般的なログパーサです。<file_to_process> <module_name> <reg_exp> という 3つの引数が必要です。async_string のモジュールタイプで、<reg_exp> に指定した正規表現にマッチするデータを抽出する、 <module_name> という名前のモジュールを生成します。このプラグインの利用例は後述します。
  • pandora_df: Windows のプラグインととても良く似ていますが、システムにマウントされているすべてのパーティションの空き容量を返します。NFS マウントの情報も返します。デフォルトでは、マウントされたすべてのファイルシステムの情報が返されます。特定のファイルシステムを指定したい場合は、プラグインのパラメータに指定します。

これらのプラグインは、Windows のプラグインととても良く似ています。プラグインの利用にはフルパスを指定する必要はありません。module_plugin ディレクティブは、エージェントのホームディレクトリ内の "plugin" ディレクトリを検索します。プラグインの実行には、次のように設定します。

module_plugin grep_log /var/log/syslog Syslog .

module_plugin pandora_df tmpfs /dev/sda1

また、Unix ではいくつかの特別なプラグインも動作します。

  • nagios_plugin_wrapper: これは、実際のプラグインではありません。これは、Nagios プラグインを実行し、pandora モジュールを生成するために使うラッパーです。これは、標準出力の結果をモジュールの説明に反映させ、モジュールの実行結果のエラーレベルを module_proc (boolean) の結果に反映させます。nagios_plugin_wrapper のパラメータを使って、Nagios プラグインが呼び出されます。その毛化、Pandora FMS モジュールが生成されます。
  • inventory: これは、インベントリシステムで利用されます。これは、システムに関するさまざまな情報を集めたインベントリの XML を生成します。しかし、Linux におけるデフォルトの動作は、パッケージ、サービス、デフォルトの runlevel およびオプションを取得するのみです。より詳細は、インベントリのドキュメントを参照してください。
  • pandora_update: これは、ソフトウエアエージェントの自動アップデートに利用されます。より詳細は、エージェント設定の章を参照してください。

1.4.12.3 プラグインの利用例

ソフトウエアエージェントのプラグインは、一つのデータもしくはグループ化したデータを返すことができます。Windows で一つのデータを返す ps.vgs の例を示します。次の設定でプラグインを実行します。

module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\ps.vbs" IEXPLORE.EXE

プロセスがダウンしている場合は 0 を返し、プロセスがいる場合は 1 を返すモジュールです。

<module>
    <name><![CDATA[IEXPLORE.EXE]]></name>
    <description><![CDATA[Process IEXPLORE.EXE status]]></description>
    <![CDATA[1]]>
</module>

次に Windows で複数のデータを返す df.vbs プラグインの例を示します。次の設定でプラグインを実行します。

module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\df.vbs"

プラグインは見つけたモジュールごとにモジュールを返します。出力結果は次の通りです。

<module>
    <name><![CDATA[C:]]></name>
    <description><![CDATA[Drive C: free space in MB]]></description>
    <![CDATA[8050]]>
</module>

<module>
    <name><![CDATA[D:]]></name>
    <description><![CDATA[Drive D: free space in MB]]></description>
    <![CDATA[900]]>
</module>

1.4.13 ソフトウエアエージェントエディタでのプラグイン

Pandora FMS 5.0 からは、直接設定ファイルを編集することなく、コンソールからソフトウエアエージェントプラグインを管理することができます。

エージェントのリモート設定が有効になっている場合、管理画面にプラグインエディタタブが表示されます。

Plugin editor tab.png

エディタは、プラグイン一覧を表示し、削除、追加、無効化をすることができます。ポリシーを使うとプラグインを無効化するのが便利です。なぜなら、ポリシーが再度適用された場合、プラグインは無効化されたままになるからです。

Plugin editor.png

このエディタから管理されるプラグインは、エージェント設定ファイルでも編集できます。

Plugin editor conf.png

1.4.14 独自エージェントプラグインの作成方法

とても簡単で、以下の 2点に注意してください。

  • やりたいことが自動実行されます (インタラクティブな実行ではありません)。そのため、事前にコマンドライン (シェル) で動作確認をしてください。どんな種類のスクリプト言語やコンパイル言語でも利用できます。なお、それを実行するために必要な依存ファイル (ライブラリ、dll 等) も用意する必要があります。
  • プラグインは、標準出力に情報を出力しなければなりません (echo や printf など各言語に応じたコマンドにて)。また、Pandora FMS エージェント情報としての XML の書式を利用します。以下に、generic_data (numerical information) の XML の例を示します。
<module>
<name><![CDATA[Sample_Module]]></name>
<type><![CDATA[generic_data]]></type>
<![CDATA[47]]>
<description><![CDATA[47]]></description>
</module>

<![CDATA[xxx]]> は、データを示す記述として使われ、XML に <、>、& や % などの文字が入るのを避けるものです。

独自プラグインを作成する前に、http://pandorafms.org にある Pandora FMS プラグインライブラリを参照してください。また、独自プラグインを作成したら、他のユーザが使えるように是非ライブラリにアップロードしてください。

Template warning.png

カスタムプラグインの終了コードは 0 になるようにしてください。そうでないと、Pandora FMS エージェントはプラグインでエラーが発生したものと認識し、出力を無視します。

 


1.4.14.1 サンプルプラグイン

#!/bin/bash
# Detect if local Mysql is without password
# First, do we have a running MySQL?
CHECK_MYSQL=`netstat -an | grep LISTEN | grep ":3306 "`
if [ ! -z "$CHECK_MYSQL" ]
then

        CHECK_MYSQL_ROOT=`echo "select 1234" | mysql -u root 2> /dev/null | grep 1234`
        if [ -z "$CHECK_MYSQL_ROOT" ]
        then
        echo "<module>"
        echo "<type>generic_proc</type>"
        echo "<name>mysql_without_pass</name>"
        echo "<data>1</data>"
        echo "<description>MySQL have a password</description>"
        echo "</module>"
        else
        echo "<module>"
        echo "<type>generic_proc</type>"
        echo "<name>mysql_without_pass</name>"
        echo "<data>0</data>"
        echo "<description>MySQL do not have a password</description>"
        echo "</module>"
        fi
fi

exit 0

1.4.15 エージェントでの nagios プラグインの利用

Nagios には多くのすばらしいプラグインがあり、Pandora FMS で利用することができます。プラグインサーバで nagios 互換モードを使ってリモートでプラグインを利用することができますが、ステータスを取得するのみで、いくつかの nagios プラグインが持っている詳細情報を扱うことができません。

ソフトウエアエージェントで nagios プラグインラッパーを使うことで、この問題が解決します。ラッパーは、バージョン 3.2 の Unix エージェントにデフォルトで付属しています。Pandora FMS Windows エージェント用の同様のプラグインは、http://pandorafms.com のリソースライブラリ [1] からダウンロードできます。

nagios プラグイン用のプラグインラッパーは何をするのでしょうか。

nagios プラグインをそれ独自のパラメータを使って実行し、出力データを Pandora FMS で使いやすいように、次のような 2種類のデータに変換します。

  • ステータス情報: 正常(1)、異常(0)、警告(2)、不明() および、その他(4)。デフォルトでは、proc モジュールを利用します。正常および異常状態は、デフォルトで認識します。もし、警告やその他の状態を利用したい場合は、手動でモジュールのしきい値を設定してください。
  • 詳細情報: 通常は文字列データで、モジュールの説明フィールドに入ります。例えば、"OK: successfully logged in" といったかたちになります。

1.4.15.1

実行権限がついた pop3 プラグイン (/tmp/check_pop3_login) があったとします。これは、pop3 アクセスが正常かどうかチェックします。リモートホストに接続し、ユーザ名とパスワードを送信し、問題ないかを確認します。コマンドラインからは、次のように実行できます。

/tmp/check_pop3_login  mail.artica.es [email protected] mypass

次のような結果が返ってきます。

OK: successfully logged in.

異常の場合はつぎのようになります。

Critical: unable to log on

ラッパーの利用は簡単で、コマンドの前に、ラッパーとモジュール名を設定します。

/etc/pandora/plugins/nagios_plugin_wrapper sancho_test /tmp/check_pop3_login  mail.artica.es [email protected] mypass

これで、エージェントプラグイン用に完全な XML を生成します。

<module>
<name>sancho_test</name>
<type>generic_proc</type>
0
<description><![CDATA[Critical: unable to log on]]></description>
</module>

または、

<module>
<name>sancho_test</name>
<type>generic_proc</type>
1
<description><![CDATA[OK: successfully logged in.]]></description>
</module>

pandora_agent.conf の全設定は次のようになります。

module_plugin nagios_plugin_wrapper POP3_artica.es /tmp/check_pop3_login mail.artica.es [email protected] mypass

これは、モジュール内で次のように表示されます。(障害時)

Sample plugin wrapper.png

1.4.16 KeepAlive によるモニタリング

特別なモジュールがあります。"keep_alive" と呼ばれる独特なもので、エージェントからの接続がないことを知るのに便利です。エージェントが情報を送信を停止した場合、それを通知するのに利用します。

エージェントに情報を取得するリモートもしくはローカルのモジュールがある場合、エージェントの最新の "接続" が更新されます。全モジュールの中の一つのモジュールでもデータが更新されれば、最新の接続日時が更新されます。これは、エージェントが "応答しているかどうか" を知るのに便利です。正確には、その間隔の 2倍の時間データが更新されないと、エージェントは "停止" と認識します。エージェントの間隔が 5分であれば、10分以上更新されなければ、"停止" と認識します。

keepalive モジュールが設定されている場合、それを通知し異常状態にします。

このモジュールの設定はとても簡単です。新たに "dataserver" モジュールを作成すれば良いだけです。

Keepalive create.png

作成されると、定義した間隔でエージェントからデータを取得できている間は、常に "正常" 状態になります。

Keepalive1.png

エージェントがデータ送信を停止した場合 (この例では、1分間隔にしています)、自動的に障害状態になります。

Keepalive2.png

重要な点として、エージェントのデータ収集として Ping などのリモートモジュールが定義されている場合、keepalive モジュールは異常状態にはならないことに注意してください。なぜなら、Ping を通してエージェントの状態がアップデートされるためです。

それ以外では、keepalive モジュールは他のモジュールと同じように動作します。アラートに関連付けることが可能ですし、レポート、マップ等、他の要素で利用することもできます。

1.4.17 コマンドスナップショットモニタリング

このモニタリングは、バージョン 4.0.3 から対応しており、単一の値や文字列ではなくコマンドの出力結果をキャプチャするためのものです。このモジュールは、情報をテキストとして保存しますが、単一データではなくコマンドの出力結果全体を保存します。コマンドの出力結果をそのまま表示します。

言葉で説明するより画面がわかりやすいです。

Snapshot 1.png

これは、Pandora FMS で "netstat -an" コマンドの出力をキャプチャしたものです。コマンドスナップショットのアイコンをクリックすると、複数行にわたる出力が表示されます。

Snapshot 2.png

これらは、時間ごとに異なるスナップショットになります。Pandora は、エージェントが異なる情報を取得した場合にのみ情報を表示します(データタイプは、generic_data_string であることに注意してください)。毎回データを保存したい場合(お勧めはしません)は、async_string を利用します。変化があった場合の情報のみを表示することは、データに問題がある部分を確認したり、ある時間間隔におけるコマンドスナップショット内の変化を比較するのに便利です。

コマンド出力をスナップショットとして取得するためには、XMLタグ付きで全データを送信する簡単なプラグインを書く必要があります。また、module_plugin の書式で通常のプラグインと同様にプラグインを実行します。以下に、前述の netstat コマンドの出力を生成するスクリプト例を見てみましょう。

#!/bin/bash
echo "<module>"
echo "<name>netstat</name>"
echo "<type>generic_data_string</type>"
echo "<data><![CDATA["
netstat -an | grep LIST
echo "]]></data>"
echo "</module>"

このスクリプトをファイルに保存(ファイルコレクションでリモートから配布できます)し、エージェントから次のように実行します。

module_plugin <full path for file>

これにより、ほぼどんなコマンド("netstat...." の部分を任意のコマンドに置き換えてください)であっても、エージェントがコマンドのスナップショットを生成します。Unix システムでは、次のようなコマンドも便利です。

* top -b -n 1
* ps aux
* vmstat 1 5
* who 
* last -10

Windows システムでは、つぎのようなものがあります。

* tasklist
* netstat -an
* net start

Info.png

スクリプト内で XML を生成する必要があることに注意してください。module_exec で実行してしまうと、コマンドの実行結果の一行一行が異なるデータとなってしまい、コマンドスナップショットとして見ることができません。

 


1.4.18 画像の監視と表示

この監視は、バージョン 6.0SP4 以降で可能です。base64 でエンコードされたテキストフォーマットで、画像を含むモジュールを定義することができ、結果に画像を表示することができます。データはテキストで保存されますが、画像として表示されます。

'画像キャプチャ' アイコンをクリックしたときに、"data:image" (画像は base64) を含む文字列を Pandora FMS が検出します。

Snapshot text 1.png

このように画像を表示するには、全データと必要な XML タグを送るプラグインを書き、モジュールプラグインとして実行する必要があります。以下のプラグインの例は、上記の画像を出力する例です。

#!/bin/bash
echo "<module>"
echo "<name>Current league leader</name>"
echo "<type>async_string</type>"
echo "<data><![CDATA[data:image/jpeg;base64,/9j/4AAQSkZ....]]></data>"

//the previous data would be generated by a device/application supplying images in base64.

echo "</module>"

上記のファイルをエージェント上で保存し(またはファイルコレクションで配り)し、次のように実行します。

module_plugin <ファイルへのフルパス>

1.4.19 グループをパスワードで保護する

デフォルトで Pandora Server は、Pandora Agent からの最初のデータを受け取ると、pandora_agent.conf で指定されているグループにエージェントを作成します。これはつまり、グループ名が分かれば誰でもそのグループにエージェントを追加できることを意味します。これは 1台の Pandora Server を複数のクライアントで共有している場合など、エージェントのグループ分けを厳格に行いたい場合に問題になる可能性があります。

バージョン 6.0SP5 から、グループに対してパスワードを設定できるようになりました。パスワードを設定した場合、pandora_agent.conf にも同じパスワードを指定しないと、エージェントは作成されません。パスワードがチェックされるのは初回のエージェント作成時のみです。作成済みのエージェントに対してパスワードチェックは行われません。

1.4.19.1

グループパスワードを設定するには、Pandora Console のエージェントグループ管理で編集アイコンをクリックします:

 <screenshot>

パスワードを入力して保存します:

 <screenshot>

このグループにエージェントを作成したい場合は、pandora_agent.conf に以下の設定を追加します:

 group_password <password>

設定を追加したら Pandora Agent を再起動して設定を反映し、Pandora Concole でエージェントが作成されることを確認します:

 <screenshot>