Pandora: Documentation ja: Operations

From Pandora FMS Wiki
Jump to: navigation, search

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

Contents

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

1.1 エージェントの名前

Pandora FMS バージョン 7 以降では、エージェントには、別名と名前(またはユニークな識別子)があります。デフォルトでは、エージェントはランダムの 16進数から成る文字列の名前(または識別子)を生成します。また、マシンのホスト名から成る別名(または表示名)を生成します。

以前のバージョンでは、マシンの "名前" しかありませんでしたが、以前のシステムは Pandora FMS の最新バージョンと完全に互換性があります。同じPandora FMS インストールで同じ識別子(または名前)両方のエージェントのデータが混在し、上書きされます。 そのため、バージョン7以降では、異なる名前のエージェントが同じ別名を持つ可能性があります。

以下の設定トークンにより、この動作を変更できます。

pandora_agent
pandora_alias

デフォルトでは、設定ファイルのいずれかを使用しないので、マシンのホスト名を別名として取得し、非常に大きなランダムな16進数を名前または識別子として取得します。エージェント名は表示されなくなり(エージェント詳細表示を除く)、変更することはできません。 エージェントの一意の識別子はエージェントの「名前」であるため、エージェントの別名はソフトウェアエージェントの設定を心配することなく、いつでも変更できます。

1.2 エージェント設定

ソフトウェアエージェントのすべての設定と監視パラメータは、設定ファイル pandora_agent.confにあります。 これは、ソフトウェアエージェントがインストールされているマシンのローカルに保存されるため、エージェントの設定変更は、すべてこのファイルに反映させる必要があります。全エージェント設定トークンの詳細については、"PandoraFMS ソフトウエアエージェント" の章( https://wiki.pandorafms.com/index.php?title=Pandora:Documentation_ja:Configuration_Agents )を参照してください。ここでは高度な設定向けに、そのうちのいくつかのみに焦点をあてます。

1.2.1 リモート設定

エンタープライズ版では、設定の中央管理およびコンソールからのファイル管理が行える、リモートエージェント設定機能があります。これにより、エージェントをインストールしたシステムへログインすることなく、設定ファイルの管理をサーバコンソールから統括して行うことができます。

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

サーバに保存されるこれらのファイルは、Pandora FMS コンソールでの操作により修正されます。


Sw-agent.png


リモート設定を有効にするためには、最初にエージェントのローカル設定ファイルで以下のパラメータを設定します。有効にしたのちは、すべての変更は Pandora FMS コンソールから実施する必要があります。

remote_config 1

Info.png

エージェントのリモート設定を有効にしたあとは、ローカルの設定ファイルを変更してもコンソールに保存されている設定で上書きされます。これを停止したい場合は、エージェントを停止し設定ファイルを編集し、リモート設定を無効化したのち、エージェントを再起動します。

 


1.3 共通設定パラメータ

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: エージェント名です。デフォルトはホスト名が使われます。
  • 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.4 カスタムフィールド

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


Custom fields1.png



Custom fields2.png


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


Customfields.JPG


これらのカスタムフィールドは、次のような設定トークンを使ってエージェント設定ファイルから渡すことができます。

custom_field1_name Model
custom_field1_value i386

エージェントの設定で定義したカスタムフィールドが使えます。

1.5 ソフトウエアエージェントを使った監視

ソフトウェアエージェントは、情報を収集するシステム上で実行されます。 CPU使用率、空きメモリ、ディスク容量など、システム上で行う それぞれのチェックモジュール に対応します。 これら各モジュールは、実行ごとに 1つのデータを収集します。

オペレーティングシステムから特定のデータ(CPU使用率、メモリ、イベントなど)を直接収集するためのエージェント特有の ディレクティブ もあります。 これらのエージェント固有のディレクティブでは、コマンドを実行する設定は必要はありません。 詳細に関しては、ソフトウェアエージェントのインストールの章を確認してください。


Agent-monitoring.png


Pandora FMS ソフトウエアエージェントは、情報を得るために OS のコマンドを利用しています。Pandora FMS データサーバは、ソフトウエアエージェントが実行したコマンドによって生成されたデータを処理しデータベースへ保存します。エージェントからのデータは、XML でサーバへ送られます。


Esquema-3.png
Logical schema of an agent/physical agent


エージェント設定ファイルでは、モジュールは次のような構造で定義されます。

module_begin 
module_name cpu_user
module_type generic_data
module_exec vmstat 1 2 | tail -1 | awk '{ print $13 }'
module_description User CPU Usage (%)
module_end

以下に別の例を示します。

module_begin 
module_name Files data_in
module_type generic_data
module_exec ls /var/spool/pandora/data_in | wc -l
module_description Number of files incoming dir
module_end

module_exec 行には、情報を収集するために実行するコマンドが含まれます。実行結果の値は、モジュールのデータとなり監視データとして表示されます。 情報を収集する module_exec の他の例を以下に示します。

module_exec vmstat 1 2 | tail -1 | awk '{ print $13 }'

エージェントは、情報を収集するためにオペレータによって実行されたかのようにシェルでコマンドを実行するので、手動でコマンドを起動して出力を分析することをお勧めします。

$> vmstat 1 2 | tail -1 | awk '{ print $13 }'

実行結果の値は、モジュールデータとして XML に格納されます。 出力が Pandora が受け入れ可能な値(数値、英数字またはブール値)と互換性がある限り、module_exec 行には何でも指定することができます。次のようにカスタムスクリプトを指定することができます。

module_exec myScript.pl --h 127.0.0.1 -v cpu

繰り返しますが、オペレータがシェルでコマンドを実行するのと同じようにエージェントはコマンドを実行し、その戻り値を収集します。

$> myScript.pl --h 127.0.0.1 -v cpu

ソフトウエアエージェントの初回実行時には、Pandora FMS へ送った XML から全モジュールとともにエージェントを作成します。

1.5.1 モジュールの種類

データのタイプに応じた、ソフトウエアエージェントのモジュールのタイプは次の通りです。

  • generic_data: 数値および浮動小数点データです。
  • generic_data_inc: インクリメンタルな数値データです。前の値と現在の値の差分を間隔で割った値を保存します。このデータタイプは、'秒間の回数' をカウントするのに利用します。たとえば、秒間のログエントリー数、秒間受信バイト数、秒間のコネクション数などです。
  • generic_data_inc_abs: 絶対増加する数値データのタイプです。 これは、経過した秒数で割ることなく、前と現在のデータの差分を格納します。したがって、値は 2回の実行の間の差となり、1秒あたりの値にはなりません。このタイプのデータは、ログエントリ、合計受信バイト数、接続数など何かが発生した回数をカウントするために使用されます。
  • generic_proc: ブール型のデータです。値が 0 の場合は障害を意味し、0 より大きい場合は正常であることを意味します。 generic_proc型には、あらかじめ設定された障害(0)および正常(1以上)の状態があります。
  • generic_data_string: 文字列(テキスト)データです。
  • async_data: 非同期の数値データです。'generic_data' と同じですが非同期のデータで、変化したときのみ更新されます。非同期データは、収集間隔の定義がありません。
  • async_string: 非同期の文字データです。generic_string と同じですが非同期のデータで、変化したときのみ更新されます。データを取得したあとに、次の新たなデータの取得がいつになるかわからないような、ログやイベントをモニタするのに利用します。新しいデータを数秒間隔で受信したり、逆に数日間何もデータがない場合もあります。
  • async_proc: 非同期のブーリアンデータです。generic_proc と同じですが非同期のデータで、変化したときのみ更新されます。
  • Image module: テキスト文字列型モジュール(generic_data_string または async_string)をもとにしたものです。モジュール内のデータが base64 イメージの場合、つまり文字列の一部に "data:image" が含まれている場合、それは画像データとして識別され、表示画面では画像を表示するウィンドウを開くリンクが有効になります。 また、ヒストリデータとしても文字列として保存され、画像を構築/生成し表示されます。

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

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

1.5.2 ローカルモジュールの間隔

ローカルモジュール(ソフトウエアエージェントのモジュール)には、ベースとしてエージェントの実行間隔があります。言い換えると、エージェントの間隔が 5分(300秒)の場合、すべてのモジュールはデフォルトで 5分間隔となります。モジュールの間隔はエージェントの間隔よりも大きくすることはできますが、小さくすることができません。モジュールの間隔は、エージェントのそれに対して何倍するかで設定します。

エージェントの間隔が 300 で、モジュールに次の設定がされていたとします。

module_interval 2

このとき、モジュールの間隔は、300x2 になります。module_interval パラメータは、0 より大きい数値のみ対応しています。

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

(Enterprise 版のみ)

Enterprise 版では、ソフトウエアエージェントの設定が remote_config 1 になっていれば、ソフトウエアエージェントのローカルモジュールを作成・管理することができます。Enterprise 版を利用していない場合、ソフトウエアエージェントの設定は、エージェントをインストールしたサーバ上で直接設定ファイルを編集することで行う必要があります。

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

Local module editor.png

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

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

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

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

1.5.4.1 事後処理

Pandora FMS ソフトウエアエージェントは、モジュールの実行結果の値に応じたスクリプトの実行をサポートしています。これは、モジュールの実行で得られた値に応じてアクションを行えることを意味します。

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.5.4.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

上記の例では、2つの precondition が定義されています。モジュールを実行するには、すべての前提条件、この場合は 2つが満たされている必要があります。モジュールは、number_active_processes.sh スクリプトが 10より大きい数値を返し、important_service_enabled.sh スクリプトが 1を返す場合にのみ実行されます。

事前処理の結果が 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

上記の例では、ソフトウエアエージェントは、値が 10 より大きい場合に 'number_active_processes.sh' スクリプトを実行します。値が 10以下の場合はモジュールが実行されません。

1.5.5 高頻度モニタリング

重要な実行プロセスやサービスなど、特に重要なモジュールが存在する場合があります。 これらのケース向けに、より制御された監視を可能にする集中監視が利用できます。

エージェントの通常の実行間隔を短くすることなく、問題が発生した場合にのみ短い間隔で監視をします。

ソフトウエアエージェントには、以下の 2つの設定パラメータがあります。

  • "Interval": エージェントの実行間隔を秒で指定します。これは、全ローカルモジュールの一般的な間隔で、必須のパラメータです。
  • Intensive_interval: 障害状態のモジュールに対して監視を行う間隔で、オプションパラメータです。

モジュールレベルでは、パラメータ module_intensive_condition を使用して、 intensive_interval で定義された時間間隔を適用する条件を設定します。

  • module_intensive_condition = 0: モジュールの値がこのパラメータで指定した値の場合、エージェントで定義された高頻度の間隔で監視します。

SSHD システムサービスの監視を通常は 5分ごとに実施したいが、障害時は 10秒ごとに監視したい場合は、次のようにエージェントを設定することができます。

intensive_interval 10
interval 300
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秒で通知されます。サービスが起動していれば、次のチェックは通常通り 5分後です。

1.5.6 指定時間モニタリング

ソフトウエアエージェントは、モジュールを指定時間に実行する設定ができます。書式は crontab と同じです。モジュールの設定例は次の通りです。

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

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

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

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

Info.png

モジュールがデータを出力しない期間を設定した場合、モジュールは "不明" 状態になります。このような場合は非同期モジュールを利用します。

 


1.6 Windows における特定の監視

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

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

1.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.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_user_session 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秒という設定です。この例では、notepad.exe プロセスはユーザのセッションで起動します。

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

1.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.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.6.3 基本リソースのモニタリング

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

1.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.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.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.6.4 WMI クエリ

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

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.7 ソフトウエアエージェントでのリモートチェック

エージェントによるリモートチェックは、セキュリティ等の特別な理由のある複雑なネットワークを簡単にモニタリングできます。

この方法は、主に Pandora FMS サーバが直接アクセスできないシステムに対してリモートチェックを行う場合に使用します。ソフトウェアエージェントをインストールし、そのからリモートチェックを実行し、ブローカエージェントで配布することができます。

この章では、ソフトウエアエージェントのこの機能の使い方について説明します。

1.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 [ $? -eq 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.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.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.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.9 ブローカーモード

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

Modo-broker.png

ブローカーモードを有効にしたソフトウエアエージェントは、新たな設定ファイルを生成します。同一のマシンで複数のソフトウエアエージェントを動かすのと同じように、オリジナルのソフトウエアエージェントと新たなブローカーがそれぞれの設定ファイルで動作します。

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

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

ブローカーを設定するには、broker_agent <ブローカー名> という設定行を追加するだけです。次のように、必要な数分 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.9.1 利用例

1.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.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.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.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.10 ソフトウエアエージェントを使ったインベントリ

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

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

1.11 UDP リモートコマンド

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

Pandora FMS ソフトウエアエージェントは、UDP サーバ 機能を持っています。これは、リモートから再起動やコマンドの実行など、エージェントに対してアクションを実行させることができます。

ソフトウエアエージェントにおける UDP サーバの基本的な設定パラメータは次の通りです。

  • udp_server: この機能を有効化(1)または無効化(0)します。
  • udp_server_port: ソフトウエアエージェントの UDP サーバのリスニングポートです。
  • udp_server_auth_address: UDP サーバがリクエストを受け付ける IP アドレスです。0.0.0.0 に設定すると、すべての発信元からのリクエストを受け付けます。

設定例:

udp_server 1
udp_server_port 41122
udp_server_auth_address 0.0.0.0

ここで、エージェントの再起動を行うためには、Pandora FMS サーバに付属する udp_client.pl スクリプトを利用します。通常は、/usr/share/pandora_server/uitl 以下にあります。コマンドラインまたは、コンソールにあらかじめ設定されているリモートエージェントコントロールのコマンドを使って、アラート処理として実行できます。

デフォルトのアラートアクションとして存在する Restart agent は、このスクリプトを利用しています。これは、UDP サーバが有効なエージェントを再起動するために、udp_client.pl スクリプトで REFRESH AGENT アクションを行います。


Agent restart action.png


ソフトウエアエージェントのリモート再起動オプションを有効化するには、次のようにします。

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

2. 変更を反映するために、ソフトウエアエージェントを再起動します。

3. エージェントのモジュールに Restart agent アラートをつけます。(エージェントの IP アドレスが正しく設定されている必要があります。)

4. アラートを発報するために、アラートの強制実行を行うか、モジュールを強制的に障害状態にします。

これにより、リモートから任意のタイミングエージェントソフトウエアの再起動を強制することができ、情報をすぐに取得することができます。

1.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" を設定します。


Udp process.JPG


sshd サービスを起動させたいエージェントで、新たなアラートアクションで新たな手動アラートを設定する必要があるだけです。これにより、手動でアラートを実行することにより、起動コマンドを発行することができます。

Info.png

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

 


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

プラグインは、ソフトウェアエージェントから複雑で高度なチェックを実行することができるものです。単一の値だけではなく、複数のモジュールを返すことができます。 Pandora FMS サーバによって実行されるサーバプラグインとは異なり、エージェントプラグインはXMLでデータを返し、同時に1つまたは複数のモジュールのデータを返します。

1.12.1 Windows システムでの実行

Windows では、デフォルトの全プラグインは、VBScript でプログラムされています。これらを実行するには、フルパスで適切なインタプリタを使用する必要があります。

以下に、Windows エージェントにデフォルトで含まれているプラグインのいくつかの使い方を示します。

module_plugin cscript.exe //B "%ProgramFiles%\Pandora_Agent\util\logevent_log4x.vbs" Application 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

Windows エージェントでは、さまざまなプラグインを使用できます。

1.12.2 Unix システムでの実行

Unix プラグインは、デフォルトでエージェントのディレクトリの "/plugin" 以下、/etc/pandora/plugins にあります。そのため、このディレクトリにある限りは実行時にフルパスを指定する必要はありません。

いくつかのプラグイン利用例を以下に示します。

 module_plugin grep_log /var/log/syslog Syslog .
 module_plugin pandora_df tmpfs /dev/sda1

Unix ソフトウエアエージェントには、デフォルトでいくつかのプラグインが含まれています。

1.12.3 プラグインの利用例

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

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.12.4 コンソールからのエージェントプラグインの管理

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

エージェントのリモート設定が有効化されていれば、管理画面にプラグイン編集タブが表示されます。

\



Plugin editor tab.png

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



Plugin editor.png

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



Plugin editor conf.png

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

プラグインは、任意のプログラミング言語で作成することができます。以下の制約を守ってください。

  • やりたいことが自動実行されます (インタラクティブな実行ではありません)。そのため、事前にコマンドライン (シェル) で動作確認をしてください。どんな種類のスクリプト言語やコンパイル言語でも利用できます。なお、それを実行するために必要な依存ファイル (ライブラリ、dll 等) も用意する必要があります。
  • プラグインは、標準出力に情報を出力しなければなりません (echo や printf など各言語に応じたコマンドにて)。また、Pandora FMS エージェントが情報を返すフォーマットとして XML を利用する必要があります。

以下に、数値モジュールの 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.12.5.1 シェルスクリプト(Linux/Unix)によるプラグインの例

#!/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.12.5.2 VBScript (Windows) によるプラグインの例

' df.vbs
' Returns free space for avaible drives.
' --------------------------------------

Option Explicit
On Error Resume Next

' Variables
Dim objWMIService, objItem, colItems, argc, argv, i

' Parse command line parameters
argc = Wscript.Arguments.Count
Set argv = CreateObject("Scripting.Dictionary")
For i = 0 To argc - 1
    argv.Add Wscript.Arguments(i), i
Next

' Get drive information
Set objWMIService = GetObject ("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk")

For Each objItem in colItems
	If argc = 0 Or argv.Exists(objItem.Name) Then
		If objItem.FreeSpace <> "" Then
			Wscript.StdOut.WriteLine "<module>"
			Wscript.StdOut.WriteLine "    <name><![CDATA[" & objItem.Name & "]]></name>"
			Wscript.StdOut.WriteLine "    <description><![CDATA[Drive " & objItem.Name & " free space in MB]]></description>"
			Wscript.StdOut.WriteLine "    <data><![CDATA[" & Int(objItem.FreeSpace /1048576) & "]]></data>"
			Wscript.StdOut.WriteLine "</module>"
            Wscript.StdOut.flush
		End If
	End If
Next

1.12.6 エージェントでの 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.12.6.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.13 KeepAlive によるモニタリング

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

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

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

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



Keepalive.JPG



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

Keepalive1.png


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



Keepalive2.png


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

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

Info.png

keepalive モジュールは、(リモート設定が有効化されていない場合でも)コンソールからのみ作成できます。pandora_agent.conf には設定はありません。

 


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

このモニタリングは、バージョン 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.15 画像の監視と表示

この監視は、バージョン 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.16 グループをパスワードで保護する

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

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

1.16.1

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

 <screenshot>

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

 <screenshot>

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

 group_password <password>

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

 <screenshot>