文書の過去の版を表示しています。


エージェント設定

Pandora FMS ソフトウエアエージェント

ソフトウエアエージェントとは?

その名前が示すとおり、OS にインストールされ、監視情報を抽出して Pandora FMS サーバへ定期的に送信するための小さなソフトウエアです。

インストールしたシステムの情報を取得するために、OS のコマンドやツールを利用します。XML フォーマットのファイルにデータをまとめ、それを処理しデータベースへ蓄える Pandora FMS データサーバへ送信します。

それぞれの監視項目は、モジュール と呼びます。

エージェント設定概要

ソフトウエアエージェントの動作は、pandora_agent.conf という設定ファイルによって決まります。Windows であればインストール先ディレクトリ、Linux であれば /etc 以下にあります。

設定ファイルには、そのエージェントの動作パラメータおよびモジュールが含まれます。

エージェントの一般的なパラメータ

この章では、エージェントの一般的なパラメータ設定について説明します。Windows および UNIX 共通のものや、それぞれ専用のものがあります。以下に一般的なパラメータ詳細について記載します。

エージェントから最初にサーバがデータを受け取った時は全ての情報がデータベースに保存されます。以降に受信したデータは(学習モードの有効・無効により)、XML ファイルにおける version, date, OS version および、設定ファイルの gis_exec, latitude, longitude, altitude parent_agent_name, timezone_offset, address, custom_field フィールドのみ更新されます。

Linux および Windows システム共に、エージェント設定ファイルの文字コードは、UTF-8です。 ファイルを編集するときは、上書きする前に文字コードを確認してください。文字コードが UTF-8 ではなく、かつ記号(マークや拡張記号など)を使う場合は、エージェントが記号を誤認識する可能性があり、設定を正しく解釈するか保証できません。

server_ip

データを保持する Pandora FMS サーバのホスト名もしくは IP アドレスを設定します。

server_path

エージェントから送られるデータを受け取るサーバのディレクトリパスを設定します。通常は、/var/spool/pandora/data_in です。

temporal

エージェントがサーバにデータを送信する前にローカルで利用するフォルダのパスを設定します。

description

XML でエージェントが送る「説明」を設定します。Pandora FMS はエージェントを作成する時に、この「説明」を取り込みます。

group

エージェントが所属するグループ名を設定します。このパラメータで指定された名前のグループがある場合、サーバが特定のグループにエージェントを作成するようにしていなければ、指定したグループ内にエージェントが作成されます。

temporal_min_size

テンポラリディレクトリのパーティション空き容量がここで指定したサイズ (MB 単位) より小さくなったら、データパケットの生成を停止します。何らかの理由でサーバへの接続が長時間切れた場合に、ディスクがいっぱいになるのを避けます。

logfile

Pandora FMS エージェントのログファイルのパスです。

interval

エージェントの秒単位のデータ収集間隔です。この間隔でエージェントは情報を収集し、Pandora FMS サーバへ送ります。

disable_logfile

このパラメータは、pandora_agent.log へのログ出力を無効化します。Windows のみ。

debug

有効化(1)すると、エージェントのデータファイルはテンポラリディレクトリ内に名前を変えて保存され、サーバへ送信したあとも削除されません。XML ファイルを開いて内容を確認することができます。

agent_name

カスタム名を設定できます。設定していない場合、エージェント名はマシンのホスト名になります。

(>= 5.1SP2) agent_name_cmd

外部コマンドを使ってエージェント名を定義したい場合に設定します。これはオプションです。このパラメータを設定した場合、'agent_name' は無視されます。外部コマンドはエージェント名を標準出力に返す必要があります。複数行を返した場合、1行目がエージェント名として扱われます。

(>= 7.0) agent_alias_cmd

外部コマンドを使ってエージェントの別名を定義したい場合に設定します。このパラメータを設定した場合、'agent_alias' は無視されます。外部コマンドはエージェントの別名を標準出力に返す必要があります。複数行を返した場合、1行目がエージェントの別名として扱われます。

address

これは、ソフトウエアエージェントの IP アドレスです。X.X.X.X というフォーマットの IP アドレス、'localhost' のようなホスト名、または 'auto' を設定できます。IP アドレスまたはホスト名を指定した場合は、そのアドレスがエージェントに追加され、メインのアドレスとなります。'auto' を指定した場合は、ホストから IP アドレスを取得してエージェントに追加されます。

encoding

ISO-8859-15 や UTF-8 のように、システムのエンコーディングの種類を設定します。

server_port

このパラメータは、リモートのサーバの待ち受けポートの設定です。Tentacle のデフォルトは 41121 です。

transfer_mode

このパラメータには、エージェントからサーバへデータを送信するための方法を設定します。デフォルトは Tentacle です。

(>= 6.0) transfer_timeout

データ転送プログラムの実行タイムアウトを秒単位で指定します。設定されていない場合のデフォルトは 30 です。

server_pwd

Windows の FTP もしくは Tentacle 転送モードのパスワードを設定します。Tentacle モードの場合はパスワードは必須ではありません。このパスワードでサーバでの認証を行います。

server_ssl

Tentacle の転送モードを設定します。SSL を利用する場合は 1、そうでなければ 0 を設定します。

server_opts

Tentacle の転送モードを設定します。Tentacle クライアントの拡張設定のために渡す、追加パラメータを設定します。

バージョン 3.2 以降のエージェントでは、tentacle がサーバへデータを送信するのに HTTP プロキシをサポートしています。プロキシを利用するには、つぎのような拡張オプションを使います。

server_opts "-y user:[email protected]:8080"

この例では、tentacle クライアントがポート 8080、ユーザ “user”、パスワード “pass” でプロキシ 'proxy.inet' に接続します。プロキシサーバが 192.168.1.2 で、ポート番号が 9000、また、認証が無い場合は次のようにします。

server_opts "-y 192.168.1.2:9000"
delayed_startup

デフォルトでは無効です。 エージェント起動後、処理を開始するまでの待ち時間( または )です。MS Windows 以外のソフトウエアエージェントで利用できます。

startup_delay

デフォルトでは無効です。 エージェント起動後、処理を開始するまでの秒単位の待ち時間です。MS Windows® でのみ利用できます。

pandora_nice

このパラメータには、Pandora FMS エージェントプロセスの優先順位を設定します。この設定は、Unix/Linux エージェントにのみ存在します。

autotime

これを有効に設定 (1 に設定) すると、エージェントが送信する時間データを無視し、サーバに接続した時間をサーバのローカル時間で認識するようになります。この設定は、何らかの理由によりエージェントの時刻がおかしかったり、サーバの時刻と大きくずれている場合に利用します。

cron_mode

このパラメータを有効にすると、エージェントをそれ自身の実行の仕組みではなく、Linux の crontab から指定した時刻に実行できるようになります。デフォルトでは無効になっています。

remote_config

(Pandora FMS Enterprise のみ)

リモートエージェント設定を有効化(1)または無効化(0)します。Tentacle 転送モードでのみ利用できます。

xml_buffer

有効化(1)すると、エージェントは接続障害等でサーバに XML ファイルを送信できなかったとき、それをテンポラリディレクトリに保存します。それらは、通信が復旧したときに送られます。

timezone_offset

エージェントではサーバのタイムゾーンとのオフセットを設定できます。これは、エージェントが異なるタイムゾーンのサーバで稼働しているとき、同じ時間に合わせる場合にとても便利です。エージェントは、調整したタイムゾーンでサーバに送信します。

 # Timezone offset: Difference with the server timezone
 timezone_offset 3

サーバのタイムゾーンからエージェントのタイムゾーンを差し引いて計算されます。例えば、サーバのタイムゾーンが UTC+1 で、エージェントのタイムゾーンが UTC-5 であれば、タイムゾーンのオフセットは、6 = 1 - (-5) です。

parent_agent_name

ソフトウエアエージェントの親を指定します。Pandora FMS に存在するエージェント名である必要があります。

agent_threads <スレッド数>

モジュールを並行して実行するエージェントのスレッド数です。デフォルトではシングルスレッドで、すべての処理完了まで 1つずつモジュールを実行します。これは、UNIX エージェントのみの機能です。

 # Number of threads to execute modules in parallel
 agent_threads 4
include <ファイル名>

別の設定ファイルパスです。このファイルには、メインの設定ファイルに加えて追加のモジュールや収集を含めることができます。これはオプションです。ファイルのアップロードには、ユーザに少なくともエージェントの(AW)権限が必要です。

broker_agent <名前>

ブローカーエージェント機能を有効化します。有効化するにはパラメータのコメントを外し、ブローカーエージェントに割り当てる名前を指定する必要があるだけです。メインの設定ファイルに記載したブローカーエージェントの名前で新たな設定ファイルが生成されます。この設定はメインのエージェントでのみ利用でき、作成された新たなエージェント設定内では利用できません。

broker_agent Name_broker
pandora_user <ユーザ>

このパラメータはオプションで、システムの特定のユーザでエージェントを実行させるためのものです。指定するユーザは、エージェントの実行権限等を持つ必要があります。

(>= 5.X) custom_id

外部アプリケーションのための、エージェントのカスタム ID です。

(>= 5.X) url_address

コンソールでエージェントから開くカスタム URL です。

(>= 5.X) custom_fieldX_name

システムに設定済のエージェントのカスタムフィールド名です。存在しない場合は無視されます。

例:

custom_field1_name Model

(>= 5.X) custom_fieldX_value

前述のパラメータで定義されたカスタムフィールド X の値です。

例:

custom_field1_value C1700
(>= 5.X) macro
macro<macro> <value>

モジュールの定義で利用可能なローカル実行マクロを定義します。この種のマクロは、主にメタコンソールシステムで利用します。ローカルモジュールコンポーネントシステムで、ローカルモジュールの利用を簡単にし、ソースモジュールの定義を編集する必要がないようにします。これにより、GUI に新たなフィールドが表示されます。ローカル実行マクロは、_field1_、_field2_、… のようなローカルプラグインマクロと似た名前をもちます。

例:

module_begin
module_name Particion_opt
module_type generic_data
module_exec df -kh _field1_ | tail -1 |  awk '{ print $5}' | tr -d "%"
module_macro_field1_ /opt
module_end
(>= 6.0SP5) group_password <パスワード>

エージェントグループのパスワードです。グループのパスワード保護をしない場合は、コメントアウトした状態にしてください。

(>= 7.0) ehorus_conf <パス>

eHorus エージェント設定ファイルの絶対パスです。エージェントは、eHorus エージェントを特定するキーを含むカスタムフィールド名 eHoursID を作成します。

(>= 7.0OUM713) transfer_mode_user <ユーザ>

ローカル転送モードでコピーされるファイルのユーザでえす。正しく動作するためには、コンソールのフォルダで、このユーザがリモート設定ファイルを読み書きできる権限が必要です。デフォルトは apache です。

(>= 7.0OUM721) secondary_groups <セカンダリグループ>

エージェントに割り当てるセカンダリグループ名です。複数のセカンダリグループをカンマ区切りで指定できます。サーバ上に存在しないグループを指定した場合はグループは割り当てられませんが、エージェントの作成には影響ありません。

(>= 7.0OUM728) standby <1|0>

エージェントがスタンバイモード(1)の場合、エージェントは監視を実行せず XML の生成や送信を行いません。この設定は、リモート設定がある Enterprise 版の利用時に意味があります。これにより、エージェントを無効化した場合に動作を停止することができます。

デバッグモードの場合はこの機能を上書きし、エージェントは通常動作をします。

セカンダリサーバ

データを送信するセカンダリサーバを設定することができます。設定により二種類の動作モードがあります。

  • on_error: プライマリサーバにデータを送信出来なかった場合のみ、セカンダリサーバにデータを送信します。
  • always: プライマリサーバにデータが送信できるかどうかに関わらず、常にセカンダリサーバにもデータを送信します。

設定例:

 secondary_server_ip     192.168.1.123
 secondary_server_path   /var/spool/pandora/data_in
 secondary_mode          on_error
 secondary_transfer_mode tentacle
 secondary_server_port   41121

UDP サーバ

Pandora FMS エージェントは、リモートからコマンドを受け取る設定ができます。このサーバは、ユーザが指定した UDP のポートで待ち受けており、アラートが発生したときに何らかのコマンドを実行するなど、リモートシステム (基本的には Pandora FMS) から命令を受け取ることができます。

UDP リモートサーバの設定には、いくつかのオプションがあり、pandora_agent.conf にて設定します。

  • udp_server:UDP サーバを有効にする場合は 1 を設定します。デフォルトでは無効です。
  • udp_server_port: 待ち受けポート番号を設定します。
  • udp_server_auth_address: 命令の送信を許可する IPアドレスを設定します。カンマ区切りで複数のアドレスを指定できます。0.0.0.0 に設定すると、UDP サーバはすべてのアドレスからのリクエストを受け付けます。
  • process_<name>_start <command>: ユーザ定義プロセスを起動するコマンドを設定します。
  • process_<name>_stop <command>: プロセスを停止するコマンドを設定します。
  • service_<name> 1: リモートから停止や起動ができるサービス名 <name> を設定します。

設定例:

 udp_server 1
 udp_server_port 4321
 udp_server_auth_address 192.168.1.23
 process_firefox_start firefox
 process_firefox_stop killall firefox 
 service_messenger 1 

サーバは、次のコマンドを受け付けます。

 * **<START|STOP> SERVICE <サービス名>**: サービスの起動や停止を行います。
 * **<START|STOP> PROCESS <プロセス名>**: プロセスの起動や停止を行います。
 * **REFRESH AGENT <エージェント名>**: エージェントの強制実行および、データの更新を行います。

例:

 STOP SERVICE messenger
 START PROCESS firefox
 REFRESH AGENT 007

サーバの /util/udp_client.pl に、Pandora FMS サーバでアラート発生時にプロセスやサービスを起動できる実行コマンドとして利用できるスクリプトがあります。次のような書式で利用します。

./udp_client.pl <address> <port> <command>

例えば、エージェントを再起動するには次のようにします。

./udp_client.pl 192.168.50.30 41122 "REFRESH AGENT"

より詳しくは、アラート設定の章を参照ください。

モジュール定義

設定ファイル pandora_agent.conf にてローカルモジュールの実行を定義します。利用可能な全パラメータを以下に説明します。

一般的な書式は次の通りです。

 module_begin
 module_name <モジュール名>
 module_type generic_data
 module_exec <実行するローカルコマンド>
 module_end

モジュールの種類によって違いがあります。この例は、ほとんどのモジュールで使われる共通で必須の行のみです。

全モジュールで共通の項目

モジュールのフィールド情報はモジュール作成時にのみ反映されます(モジュールデータ、説明、拡張情報を除く)。モジュールがすでに存在する場合は更新されません。

**module_begin**

モジュール定義の開始を示す、必須項目です。

module_name <名前>

モジュールの名前です(必須)。重複した名前は設定できません。

module_type

モジュールが返すデータタイプです。いずれか一つを選択することが必須です。指定可能なデータタイプは次の通りです。

  • Numerical (generic_data): 小数または整数の数値データです。小数値の場合は整数に切り捨てられます。
  • Incremental (generic_data_inc): 前の値と現在の値の差分を間隔の時間で割ったデータです。差分がマイナスの場合は値はリセットされます。これは、差分は再びプラスになること、増分がプラスの値である限りは前のデータとの差が利用されることを意味します。
  • Absolute incremental (generic_data_inc_abs): 前の値と現在の値の差分データです。絶対的な差分の値であり、単位時間あたりの差分ではありません。差分がマイナスの場合は値はリセットされます。差分が再びプラスになった場合はベースの値として利用され、そこから差分が計算されます。
  • Alphanumeric (generic_data_string): 文字列です。
  • Booleans (generic_proc): 正常(1)または異常(0)をとる値です。コンピュータが動いているか、プロセスやサービスが動いているかどうかのチェックに便利です。異常値(0)には障害状態があらかじめ設定されています。それよりも大きい任意の値(1より大きい数字も扱えます)は正常と判断されます。
  • Asynchronous Alphanumeric (async_string): (定期実行ではない)非同期の文字列収集に使います。非同期監視は、任意のタイミングで発生するイベントや変更に依存するため、このタイプのモジュールは不明状態にはなりません。
  • Asynchronous Monitor (async_proc): generic_proc と似ていますが、非同期のデータタイプです。
  • Asynchronous Numerical (async_data): generic_data と似ていますが、非同期のデータタイプです。
module_min <値>

そのモジュールが返すことを許容されるデータの最小値です。範囲を外れたデータはサーバにより削除されます。

module_max <値>

そのモジュールが返すことを許容されるデータの最大値です。範囲を外れたデータはサーバにより削除されます。

module_min_warning <値>

モジュールが警告状態になる最小値です。

module_max_warning <値>

モジュールが警告状態になる最大値です。

module_min_critical <値>

モジュールが障害状態になる最小値です。

module_max_critical <値>

モジュールが障害状態になる最大値です。

module_disabled <値>

モジュールが、有効(0)か無効(1)かを表します。

module_min_ff_event <値>

連続抑制回数を指定します。連続抑制回数とは、収集データに揺らぎがあるような場合に、それを変化としてとらえないように抑止するものです。

(>= 6.0 SP4) module_each_ff <値>

有効化(1)すると、module_min_ff_event の代わりに連続抑制回数に個別状態変化(module_min_ff_event_normal, module_min_ff_event_warning および module_min_ff_event_critical)を利用します。

(>= 6.0 SP4) module_min_ff_event_normal <値>

個別状態変化で、正常状態へ移行する場合の連続抑制回数です。

(>= 6.0 SP4) module_min_ff_event_warning <値>

個別状態変化で、警告状態へ移行する場合の連続抑制回数です。

(>= 6.0 SP4) module_min_ff_event_critical <値>

個別状態変化で、障害状態へ移行する場合の連続抑制回数です。

(>= 6.0 SP4) module_ff_timeout <秒>

指定した秒数が経過したら連続抑制回数のカウンターをリセットします。これは、module_min_ff_event に指定した抑制回数の状態変化が module_ff_timeout に指定の秒数以内に発生する必要があることを意味します。

(>= 734) module_ff_type <値>

これは、連続抑制の高度なオプションで、モジュールの状態を制御します。 “カウンタを保持する” ことによって、値の代わりに、受け取った値を持つモジュールの状態に応じて、ある状態から別の状態に渡すカウンタ値をいくつか設定します。

有効(1)か無効(0)かを指定します。

module_description <テキスト>

モジュールの任意のコメントです。

module_interval <間隔倍率>

それぞれのモジュールの実行間隔をエージェントの間隔の倍率で設定することができます。例えば、エージェントが 300 (5 分)間隔の設定であった場合に、あるモジュールだけ 15分間隔にしたいときに、module_interval 3 を設定します。そのモジュールは、300秒 x 3 = 900秒 (15分) 間隔で実行されます。

ブローカーエージェントで module_interval が動作するようにするには、元のエージェントと同じ間隔に設定する必要があります。 そうしないと、正しく動作しない可能性があります。

module_timeout <秒数>

モジュールの最大実行時間を秒単位で指定します。実行中にこの時間を超過した場合は、実行が中止されます。

module_postprocess <倍率>

モジュールから返される値を何倍するかの値です。データの単位を変換するのに便利です。もし、エージェントが取得した値に 1024 を掛けたい場合は、1024 を設定します。また、1024 で割りたい場合は、1/1024 を意味する 0.000976563 を設定します。

module_save <変数名>

このパラメータで定義された名前の変数にモジュールから返された値を保存します。この値はあとから他のモジュールで利用できます。

例:

 module_begin
 module_name echo_1
 module_type generic_data
 module_exec echo 41121
 module_save ECHO_1
 module_end

“ECHO_1” という変数に、値 41121 を保存します。

 module_begin
 module_name echo_2
 module_type generic_data
 module_exec echo $ECHO_1
 module_end

2つ目のモジュールでは、“$ECHO_1” という変数の内容を表示します。“41121” となります。

Windows エージェントでは、変数は $var ではなく %var% で指定します。 以下に例を示します。

 module_begin
 module_name echo_2
 module_type generic_data
 module_exec echo %ECHO_1%
 module_end
module_crontab <分> <時間> <日> <月> <曜日>

バージョン 3.2 から、モジュールを指定した日時に実行させるようにすることができます。この設定は、module_crontab にて、crontab に似た設定を行うことにより実現します。

module_crontab <分> <時間> <日> <月> <曜日>

指定可能な範囲は次の通りです。

  • 分 0-59
  • 時間 0-23
  • 日 1-31
  • 月 1-12
  • 曜日 0-6 (0 が日曜です)

期間を指定する - を利用することも可能です。

例えば、あるモジュールを毎週月曜の 12時から 15時の間に実行するには、次のような設定をします。

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

コマンドを毎時 10分に実行したい場合は、次のようにします。

 module_begin
 module_name crontab_test3
 module_type generic_data
 module_exec script.sh
 module_crontab 10 * * * *
 module_end
module_condition <評価式> <コマンド>

バージョン 3.2 から、モジュールが特定の値を返す場合にコマンドを実行させることが可能です。次に示すオプションの一つを定義します。

  • > [値]: モジュールの値が指定された値よりも大きい場合にコマンドを実行します。
  • < [値]: モジュールの値が指定された値よりも小さい場合にコマンドを実行します。
  • = [値]: モジュールの値が指定された値と同じ場合にコマンドを実行します。
  • != [値]: モジュールの値が指定された値と異なる場合にコマンドを実行します。
  • =~ [正規表現]: モジュールの値が指定された正規表現にマッチする場合にコマンドを実行します。
  • (値, 値): モジュールの値が指定された値の範囲の場合にコマンドを実行します。

同一のモジュールに複数の条件を設定することも可能です。以下の例では、モジュールの値が 1 と 3 の間の時にscript_1.sh が実行されます。また、モジュールの値が 5.5 より大きい時に script_2.sh が実行されます。module_exec の結果が 2.5 なので、最初の script_1.sh のみ実行されます。

 module_begin
 module_name condition_test
 module_type generic_data
 module_exec echo 2.5
 module_condition (1, 3) script_1.sh
 module_condition > 5.5 script_2.sh
 module_end

例:

 module_begin
 module_name MyProcess
 module_type generic_data
 module_exec tasklist | grep MyProcess | wc -l
 module_condition > 2 taskkill /IM MyProcess* /F
 module_end
 module_begin
 module_name PandoraLogSize
 module_type generic_data
 module_exec ls -la "c:\Archivos de programa\pandora_agent\pandora_agent.log" | gawk "{ print $5 }"
 module_condition > 10000 del "c:\Archivos de programa\pandora_agent\pandora_agent.log"
 module_end
 module_begin
 module_name Service_Spooler
 module_type generic_proc
 module_service Spooler
 module_condition = 0 net start Spooler
 module_end
  • 注意: Windows プラットホームでは、コマンドの実行にはそれが正しく実行されていることを確認するために cmd.exe /c を利用することをお勧めします。例えば次の通りです。 <code> module_begin module_name condition_test module_type generic_data module_exec echo 5 module_condition (2, 8) cmd.exe /c script.bat module_end </code> == module_precondition <評価式> <コマンド> == 事前状態定義にマッチした場合モジュールを実行します。次に示すオプションの一つを定義します。 * > [値]: コマンドの実行結果が指定された値よりも大きい場合にモジュールを実行します。 * < [値]: コマンドの実行結果が指定された値よりも小さい場合にモジュールを実行します。 * = [値]: コマンドの実行結果が指定された値と同じ場合にモジュールを実行します。 * != [値]: コマンドの実行結果が指定された値と異なる場合にモジュールを実行します。 * =~ [正規表現]: コマンドの実行結果が指定された正規表現にマッチする場合にモジュールを実行します。 * (値, 値): コマンドの実行結果が指定された値の範囲の場合にモジュールを実行します。 以下の例では、precondition で設定した実行結果が 2 と 8 の間の場合に、モジュール monitoring_variable.bat が実行されます。この例では module_precondition の実行結果が 5 であるため、値が 2 と 8 の間であり、monitoring_variable.bat が実行されます。 <code> module_begin module_name Precondition_test1 module_type generic_data module_precondition (2, 8) echo 5 module_exec monitoring_variable.bat module_end </code> module_condition と同様に、複数の事前状態定義を利用することができます。モジュールは、すべての事前状態定義にマッチした場合のみ実行されます。 <code> module_begin module_name Precondition_test2 module_type generic_data module_precondition (2, 8) echo 5 module_precondition < 3 echo 5 module_exec monitoring_variable.bat module_end </code> * 注意: Windows プラットホームでは、コマンドの実行にはそれが正しく実行されていることを確認するために cmd.exe /c を利用することをお勧めします。例えば次の通りです。
 module_begin
 module_name Precondition_test3
 module_type generic_data
 module_precondition (2, 8) cmd.exe /c script.bat
 module_exec monitoring_variable.bat
 module_end
(>= 5.x) module_unit <単位>

これは、モジュールの値に付与する単位です。

例:

module_unit %
(>= 5.x) module_group <値>

これは、モジュールグループ名です。

例:

module_group Networking
(>= 5.x) module_custom_id <値>

モジュールのカスタム ID です。

例:

module_custom_id host101
(>= 5.x) module_str_warning <値>

文字列タイプのモジュールで警告状態を定義する正規表現です。

例:

module_str_warning .*NOTICE.*
(>= 5.x) module_str_critical <値>

文字列タイプのモジュールで障害状態を定義する正規表現です。

例:

module_str_critical .*CRITICAL.*
(>= 5.x) module_warning_instructions <値>

モジュールが警告状態に変化したときのオペレータへの指示です。

例:

module_warning_instructions Increase incident priority
(>= 5.x) module_critical_instructions <値>

モジュールが障害状態に変化したときのオペレータへの指示です。

例:

module_critical_instructions Call to sys department
(>= 5.x) module_unknown_instructions <値>

モジュールが不明状態に変化したときのオペレータへの指示です。

例:

module_unknown_instructions Open incident
(>= 5.x) module_tags <値>

カンマ区切りでモジュールに割り当てるタグを指定します。

例:

module_tags tag1,tag2,tag3

(>= 5.x) module_warning_inverse <値>

警告閾値範囲の反転を有効化(1)します。

例:

module_warning_inverse 1
(>= 5.x) module_critical_inverse <値>

障害閾値範囲の反転を有効化(1)します。

例:

module_critical_inverse 1
(>= 5.x) module_native_encoding <値>

(Win32 のみ)

この設定トークンは、module_exec によってコマンドラインから実行されるモジュールにのみ影響します。

Windows では、コマンドラインエンコーディング(OEM)、システムエンコーディング(ANSI)および、UTF-16 の 3つのプロセスのエンコーディングがあります。いずれのエンコーディングも通常の文字を扱うことができますが、アクセントを表したものなどいくつかの文字に違いがあります。このトークンにより、Pandora エージェントが設定ファイル(pandora_agent.conf)で指定したエンコーディングに出力を変換します。

module_native_encoding は、次の 4種類の値を設定できます。

  • module_native_encoding OEM: コマンドラインエンコーディングに変換
  • module_native_encoding ANSI: システムエンコーディングに変換
  • module_native_encoding UTFLE: UTF-16 のリトルエンディアンに変換
  • module_native_encoding UTFBE: UTF-16 のビッグエンディアンに変換

module_native_encoding の設定が無い場合は、変換は行われません。

(>= 5.x) module_quiet <値>

有効化(1)すると、モジュールは静観モードになります。イベントやアラートを生成せずデータの保存も行いません。

例:

module_quiet 1
(>= 5.x) module_ff_interval <値>

収集データに揺らぎがあるような場合に、それを変化としてとらえるべきかを判断する期間のデータ収集間隔です。(秒単位)

例:

module_ff_interval 2
(>= 5.x) module_macro<macro> <値>

コンソールから、ローカルコンポーネントにのみ適用できます。設定ファイルで直接設定しません。

(>= 5.1 SP4) module_alert_template <テンプレート名>

このマクロは、パラメータ名(アラートテンプレート 参照)に対応したモジュールにアラートテンプレートを割り当てます。

例:

 <module>
 <name><![CDATA[CPU usage]]></name>
 <type>generic_data</type>
 <module_interval>1</module_interval>
 <min_critical>91</min_critical>
 <max_critical>100</max_critical>
 <min_warning>70</min_warning>
 <max_warning>90</max_warning>
 <alert_template><![CDATA[Critical condition]]></alert_template>
 <data><![CDATA[92]]></data>
 </module>
module_end

モジュール定義の終わりを表します。必須項目です。

情報を取得するためのディレクティブ

次に、それぞれのモジュールで情報を取得するためのディレクティブを示します。それぞれのモジュールで、1回ずつ利用できます。

module_exec <コマンド>

一般的なコマンド実行行です。 1行で情報を取得するコマンドを指定する必要があります。

Linux では、コマンドはデフォルトのシェルを使って実行されます。デフォルトのシェルは、 /bin/sh のシンボリックリンクによって決まります。通常は、bash ですが、Ubuntu のシステムでは異なります(この場合 dash)。端末でコマンドをテストしても、エージェントからの実行ではエラーが発生する可能性があります。解決策としては、次のようにコマンドラインの実行で明示的に bash を記載します。

module_exec bash -c "<command>"

実行結果が '0' 以外を返す場合は、実行エラーであり情報は取り込まれません。

Windows エージェントでのデータ取得のためのディレクティブは他にもあります。以下に示します。

module_service <サービス>

指定したサービスが実行中であるかどうかをチェックします。サービス名にスペースが含まれる場合は、“ ” でくくるのを忘れないようにしてください。

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

サービスは、Windows サービスマネージャに表示される短い名前 (サービス名) で識別されます。

非同期モード

Pandora FMS は通常、(モジュールによって定義される)一定の秒間隔にてチェックを実行します (デフォルトでは、300秒 = 5分)。そのため、チェックの直後にサービスがダウンすると、それがダウンであると認識するのに、さらに 300秒かかります。非同期モジュールでは、Pandora に “今すぐ” サービスの障害を通知するようにできます。これは、非同期操作モードと呼んでいます。非同期モードにするには、以下のディレクティブを設定してください。

module_async yes

この機能は、ブローカーエージェントでは利用できません。

Windows Home Edition では、この非同期機能はサポートされていません。Pandora エージェントはサービスが動作しているかどうかを定期的に確認します。大量のサービスを監視する場合システムリソースを消費するため、同期モードを利用することをお勧めします。

サービスのウォッチドッグ

サービスがダウンしたときに再起動するためのウォッチドッグモードがあります。サービスを起動するためのパラメータは Windows が認識しているため必要ありません。設定は簡単で、以下に例を示します。

 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

Unix

Unix でも Windows と同様に動作します。違いは Unix であることだけで、プロセスおよびサービスは同じ考え方です。例えば、bash プロセスが動作しているかを確認するには次のようにします。

 module_begin
 module_name Service_bash
 module_type generic_proc
 module_service /bin/bash
 module_description Process bash running
 module_end

Unix エージェントでは、ウォッチドッグと非同期検出はできません。

module_proc <プロセス>

指定した名前のプロセスがいるかどうかをチェックします。プロセス名にスペースが含まれていても、“ ” は使わないでください。プロセス名に拡張子 .exe がつくかどうかを良く確認してください。モジュールは、指定した名前で実行されているプロセスの数を返します。

以下に cmd.exe プロセスをモニタリングする例を示します。

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

Unix

UNIX では、このモジュールは module_service のように動作します。非同期およびウォッチドッグモードはサポートしません。

非同期モード

サービスと同じように、モニタリングしているプロセスにて何らかの原因で障害が発生することがあります。Windows エージェントでは、module_proc モジュールで非同期チェックをサポートしています。この場合、プロセスの状態が変化したとき、通常のモニタリング間隔における次のチェックタイミングを待たずにすぐに通知されます。これにより、プロセスに障害が発生したのとほぼ同時にそれを知ることができます。以下にプロセスの非同期モニタリング設定の例を示します。

 module_begin
 module_name Notepad
 module_type generic_proc
 module_proc notepad.exe
 module_description Notepad
 module_async yes
 module_end

違いは、“module_async yes” が設定されている点です。

プロセスのウォッチドッグ This feature is not supported on broker agents.

ウォッチドッグは、ダウンしたプロセスを見つけた場合にそれをすぐに起動させることができます。Pandora FMS の Windows エージェントは、プロセスがダウンしたときにウォッチドッグとして動作させることができます。

プロセスの実行には、いくつかのパラメータが必要です。このモジュールには、いくつかの追加設定オプションがあります。ウォッチドッグモードは、モジュールタイプが非同期の場合のみ動作することに注意してください。ウォッチドッグでの module_proc の設定例を見てみます。

 module_begin
 module_name Notepad
 module_type generic_proc
 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

以下に、ウォッチドッグを行う場合の module_proc の追加パラメータを示します。

  • module_retries:ウォッチドッグによりプロセスを起動させるリトライ回数を指定します。指定した回数に達した場合、該当モジュールのウォッチドッグは無効になり、ユーザによる復旧 (少なくともエージェントの再起動) がされるまでプロセスの起動を行わなくなります。デフォルトでは上限はありません。
  • module_startdelay:プロセスのダウンを認識した後、最初にプロセスを起動させるまでの待ち時間をミリ秒単位で指定します。
  • module_retrydelay:プロセスダウンを検知した後に起動に失敗した場合の再実行の待ち時間をミリ秒単位で指定します。
  • module_user_session: プロセスの起動をどのセッションで行うかを制御します。'no' に設定すると、プロセスはサービスセッションで起動し、バックグラウンドで動作します(デフォルト)。'yes' に設定すると、プロセスはユーザセッションで起動し、PC のデスクトップに表示されます。

    Windows Vista 以前のバージョンでは、Pandora FMS サービスプロパティで、“Interactive access with desktop” を有効にすることにより module_user_session を設定することができます。以下のスクリーンショットに示します。

    また、Pandora FMS は “SYSTEM” アカウントのサービスとして動作するため、実行されるコマンドはこのユーザおよびこのユーザの環境で動作することに注意してください。したがって、特定のプロセスを特定のユーザで実行したい場合は、環境変数の設定やその他事前処理を行う呼び出し用スクリプト (.bat など) を用意し、そのスクリプトをウォッチドッグの起動プログラムとして設定する必要があります。 == module_cpuproc <プロセス> (Unix のみ) == 特定のプロセスの CPU 使用率を返します。 <code> module_begin module_name myserver_cpu module_type generic_data module_cpuproc myserver module_description Process Command line module_end </code> == module_memproc <プロセス> (Unix のみ) == 特定のプロセスが利用しているメモリ量を返します。 <code> module_begin module_name myserver_mem module_type generic_data module_memproc myserver module_description Process Command line module_end </code> == module_freedisk <ドライブ名:>|<ボリューム> == このモジュールは、UNIX および Windows 双方で利用できます。ディスクの空き容量をチェックします。(Windows では ドライブ名のあとに “:” を忘れないようにしてください。) UNIX であれば、/var などのボリュームを指定します。 <code> module_begin module_name freedisk module_type generic_data module_freedisk C: module_end </code> <code> module_begin module_name disk_var module_type generic_data module_freedisk /var module_end </code> == module_freepercentdisk <ドライブ名:>|<ボリューム> == このモジュールは、ディスクの空きをパーセントで返します。Windows であれば、ドライブ名: (“:“を忘れないようにしてください) で、UNIX であれば、/var などのボリュームを指定します。 <code> module_begin module_name freepercentdisk module_type generic_data module_freepercentdisk C: module_end </code> <code> module_begin module_name disk_var module_type generic_data module_freepercentdisk /var module_end </code> == module_occupiedpercentdisk <ドライブ名:>|<ボリューム> == (Unix のみ) このモジュールは、/var 等の Unix ファイルシステムのディスク使用率(%)を返します。 <code> module_begin module_name disk_var module_type generic_data module_occupiedpercentdisk /var module_end </code> == module_cpuusage <cpu id> == このモジュールは、UNIX および Windows 双方で使えます。指定した CPU 番号の CPU 使用率を返します。CPU が 1つしかない場合は番号を指定しないか、all を指定します。 次のように、マルチ CPU 環境で全 CPU の平均使用率を得ることができます。 <code> module_begin module_name SystemCPU module_type generic_data module_cpuusage all module_description Average CPU use in systme module_end </code> 1つ目の CPU 使用率を確認するのは次のようにします。 <code> module_begin module_name SystemCPU_1 module_type generic_data module_cpuusage 1 module_description Average CPU use in system for CPU #1 module_end </code> == module_freememory == Windows および Unix 双方で使えます。システム全体の空きメモリ量を取得します。 <code> module_begin module_name FreeMemory module_type generic_data module_freememory module_description Non-used memory on system module_end </code> == module_freepercentmemory == Windows および Unix 双方で使えます。システム全体の空きメモリ量のパーセンテージを取得します。 <code> module_begin module_name freepercentmemory module_type generic_data module_freepercentmemory module_end </code> == module_tcpcheck == (Windows のみ) このモジュールは、指定された IPアドレスおよびポート番号への接続確認を行います。成功すると 1 が返り、失敗すると 0 が返ります。なお、タイムアウトを設定する必要があります。 <code> module_begin module_name tcpcheck module_type generic_proc module_tcpcheck www.artica.es module_port 80 module_timeout 5 module_end </code> == module_regexp == (Windows のみ) このモジュールは、正規表現を使ってファイル(ログ)の内容の比較を行います。モニタリングを開始した時点ですでに存在している行については無視します。モジュールが返す値はモジュールタイプにより異なります。 * generic_data_string, async_string: 正規表現にマッチした行全体を返します。 * generic_data: 正規表現にマッチした行数を返します。 * generic_proc: 正規表現にマッチしたら 1、そうでなければ 0 を返します。 * module_noseekeof: 0 がデフォルトです。これを有効にすると、それぞれのモジュールの実行において、ターゲットのファイル更新からは独立して、ファイルの EOF を確認することなくチェック処理が実行されます。これにより、常に検索パターンにマッチするすべての行が XML 出力に展開されます。 <code> module_begin module_name regexp module_type generic_data_string module_regexp C:\WINDOWS\my.log module_pattern ^\[error\].* module_noseekeof 1 module_end </code> 正規表現の詳細の書式については、こちら 1) を参照してください。 == module_wmiquery == (Windows のみ) WMI モジュールは、外部ツールを使わずにローカルで WMI クエリを実行できます。2つのパラメータで設定します。 * module_wmiquery: 利用する WQL クエリを設定します。さまざまなデータを含む複数の行で結果を得ることができます。 * module_wmicolumn:データソースとして利用するカラム名を設定します。 例えば、インストールされているサービス一覧を取得するには次のようにします。 <code> module_begin module_name Services module_type generic_data_string module_wmiquery Select Name from Win32_Service module_wmicolumn Name module_end </code> 現在の CPU 負荷であれば次のようにします。 <code> module_begin module_name CPU_speed module_type generic_data module_wmiquery SELECT LoadPercentage FROM Win32_Processor module_wmicolumn LoadPercentage module_end </code> == module_perfcounter == (Win32 のみ) PDH インタフェースを通して、パフォーマンスカウンタ (http://msdn.microsoft.com/ja-jp/library/aa373083(v = vs.85).aspx パフォーマンスカウンタドキュメント) からデータを取得します。Windows のライブラリの pdh.dll がインストールされている必要があります。もしインストールされていない場合は、Windows パフォーマンス解析ツールをインストールする必要があります (通常はデフォルトでインストールされています)。 <code> module_begin module_name perfcounter module_type generic_data module_perfcounter \Memory\Pages/sec module_end </code> Windows パフォーマンスモニタは、モニタリングに利用できる何百ものパラメータを持つ強力なツールです。加えて、各ベンダによる独自のモニタ項目も追加されています。 パフォーマンスツールから、パフォーマンスカウンターを確認できます。 システムツールを用いて新たなパフォーマンスカウンターを追加することができます。その構成には、要素とサブ要素を含む管理構造があります。ここでは、Processor, % of processor time および _Total です。 このように、OS のツールを使うことにより、システムパフォーマンスのさまざまな要素を取り込むことができます。この場合、モジュールの設定は次のようになります。 <code> module_begin module_name Processor_Time module_type generic_data_inc module_perfcounter \Procesador(_Total)\% de tiempo de procesador module_end </code> デフォルトでは、カウンタの生データが表示されます。調整値を取得するには、module_cooked 1 を設定します。 <code> module_begin module_name Disk_E/S_Seg module_type generic_data module_cooked 1 module_perfcounter \DiscoFísico(_Total)\E/S divididas por seg. module_end </code> 多くのデータは、カウンタ値として返ってきます。そのため、データタイプとしては generic_data_inc を使う必要があります。また、とても大きなスケール (数百万) のデータが返ってくることがありますので、事前処理モジュールで 0.000001 などを設定して値を小さくすると良いです。 == module_inventory (廃止) ==

    Windows および Linux/UNIX 双方で、現在この機能はエージェントプラグインによるインベントリで置き換えられています。

    (Win32 のみ。Linux/Unix ではエージェントプラグインとして実装されています。) 前述の WMI を利用することにより、このモジュールはソフトウエアおよびハードウエアの違った情報を取得します。 モジュールは、取得した情報の種類を分類し収集します。以下に情報の種類の一覧を示します。 * cpu: システムの CPU 情報を取得します。(プロセッサ名、クロック数、説明) * CDROM: CD-ROM の情報を取得します。(名称およびドライブ名) * Video: ビデオカードの情報を取得します。(説明、RAM容量、プロセッサ) * HDs: ハードディスクの情報を取得します。(モデル、サイズおよび、システムにおける名前) * NICs: ネットワークコントローラの情報を取得します。(説明、MAC アドレスおよび、IPアドレス) * Patches: インストール済のパッチ情報を取得します。(ID、説明、コメント) * Software: MSI パッケージの情報を取得します。(名前およびバージョン) * RAM: RAM モジュールの情報を取得します。(タグ、容量および名前) * Service: インストールされたサービスの情報を取得します。最初のカラムに、Pandora FMS がサービスのモニタリングに使う、サービスの短い名前が表示されます。 追加モジュールパラメータ: * module_interval: このモジュールは、日単位で情報収集するための間隔を定義する追加設定です。 このモジュールの利用例を以下に示します。 <code> module_begin module_name Inventory module_interval 7 module_type generic_data_string module_inventory RAM Patches Software Services module_description Inventory module_end </code> == module_logevent == (Win32 のみ) 指定されたパターンに基づいて Windows イベントログから情報を取得し、ソースおよびイベントタイプに従ってフィルタリングする機能を提供します。 このモジュールの一般的な書式は次の通りです。 <code> module_begin module_name MyEvent module_type async_string module_logevent module_source <logName> module_eventtype <event_type/level> module_eventcode <event_id> module_application <source> module_pattern <text substring to match> module_description module_end </code> すでに表示されたものを再度表示するのを防ぐために、エージェントが実行された最終時間より後のイベントのみを対象とします。 module_logevent には、次のパラメータを設定できます。(すべて大文字小文字を区別します) * module_source: イベントソース (System, Application, Security) を指定します。このフィールドは必須項目です。 * module_eventtype: イベントタイプ (Error, Information 等) を指定します。このフィールドはオプションです。 * module_pattern: 検索するパターン (文字列) を指定します。このフィールドはオプションです。 * module_eventcode: 5112 等のイベント ID 番号です。このフィールドはオプションです。 * module_application: イベント発生元のアプリケーションを指定します。イベントが検索される名前やログファイルを示す module_source と混同しないように注意してください。 例えば、system の error に分類される全てのイベントを表示するには、次のように設定します。 <code> module_begin module_name log_events module_type generic_data_string module_description System errors module_logevent module_source System module_eventtype error module_end </code> PandoraAgent という文字を含む全イベントを表示するには次のようにします。 <code> module_begin module_name log_events_pandora module_type async_string module_description PandoraAgent related events module_logevent module_source System module_pattern PandoraAgent module_end </code> その他例として、以下にイベントフィルタリングのスナップショットを示します。 <code> module_begin module_name MyEvent module_type async_string module_source Application module_eventtype Information module_eventcode 6000 module_application Winlogon module_pattern unavailable to handle module_description module_end </code> Pandora FMS は、ログを収集するシステムではないということを理解してください。このツールは、これらのクリティカルまたは重要なイベントを選択し、監視するためのシステムです。すべてのイベントを未分類で収集すると、データベースが飽和状態になりシステムパフォーマンスが著しく低下し、長期的に問題をもたらします。Pandora FMS を一般的なイベント収集ツールとして使うべきではありません。 == module_logchannel == (Windows のみ、7.0OUM715以降) Windows ログチャネルに関する情報を取得するモジュールです。module_logevent は Windows ログにのみアクセスしますが、これは、チャネルとして設定された他のログファイルからデータを展開することができます。これにより、サービスやアプリケーションログを含めたログ取得が可能になります。 このモジュールの一般的な書式は次の通りです。 <code> module_begin module_name MyEvent module_type async_string module_logchannel module_source <ログチャネル> module_eventtype <イベントタイプ/レベル> module_eventcode <イベントID> module_application <ソース> module_pattern <マッチするテキスト文字列> module_description <説明> module_end </code> すでに表示されたものを再度表示するのを防ぐために、エージェントが実行された最終時間より後のイベントのみを対象とします。 module_logchannel には、次のパラメータを設定できます。(すべて大文字小文字を区別します) * module_source: イベントチャネルを指定します。wevtutil.exe enum-logs を実行すると、ローカルログチャネルの一覧を取得できます。このフィールドは必須項目です。 * module_eventtype: イベントタイプ (critical, error, warning, info, verbose) を指定します。このフィールドはオプションです。 * module_pattern: 検索するパターン (文字列) を指定します。このフィールドはオプションです。 * module_eventcode: 5112 等のイベント ID 番号です。このフィールドはオプションです。 * module_application: イベント発生元のアプリケーションを指定します。イベントが検索される名前やログファイルを示す module_source と混同しないように注意してください。 例えば、チャネル Microsoft-Windows-TaskScheduler/Operationalinformation タイプ、コード 201、文字列 code 0 を含むすべてのイベントを表示するモジュールは次のようになります。 <code> module_begin module_name New logs module_type async_string module_logchannel module_description Successfully completed tasks module_source Microsoft-Windows-TaskScheduler/Operational module_eventtype information module_eventcode 201 module_pattern code 0 module_end </code> このモジュール設定により、Pandora FMS エージェントは次のようなログを収集します。

    イベントチャネルの名前を取得するには、チャネルを右クリックして、”プロパティ(properties)” を選択し、パラメータ “フルネーム(Full name)” をコピーします。これは、module_source で必要です。

    == module_plugin == プラグインから取得したデータを定義するためのパラメータです。これは、特殊なモジュールで、'module_begin' や 'module_type' などの 他の識別子は必要ありません。 次のような書式です。 module_plugin plugin_filename parameter_1 parameter_2 parameter_3 ただし、プラグインに状態や実行間隔などの追加パラメータを設定する場合は、次のように通常の書式を利用します。 <code> module_begin module_plugin plugin_filename parameter_1 parameter_2 parameter_3 module_interval 2 module_condition (0, 1) script.sh module_end </code> それぞれのプラグインには個別のパラメータが使われます。そのため、それぞれの特定のドキュメントを参照する必要があります。ここでは、エージェントにデフォルトで付属しているプラグインの一つであるファイル内を検索する grep_log で説明します。 module_plugin grep_log /var/log/syslog Syslog ssh この例では、プラグインの名前が “grep_log” で、“/var/log/syslog” を正規表現 “ssh” で検索する “Syslog” というモジュールであることを意味します。 Windows システムの場合の別の例を示します。(バージョン 3.1 以上) module_plugin cscript.exe B “%ProgramFiles%\Pandora_Agent\util\df_percent.vbs” == module_ping <ホスト> == (バージョン 4.0.1 以降、Windows のみ) このモジュールは、指定したホストに ping を行い、応答があれば 1、そうでなければ 0 を返します。 次のパラメータを設定できます。 * module_ping_count x: 送信する ECHO_REQUEST パッケットの数 (1 がデフォルト) * module_ping_timeout x: 応答を待つタイムアウトミリ秒数 (1000 がデフォルト) * module_advanced_options: ping.exe の拡張オプション 例: <code> module_begin module_name Ping module_type generic_proc module_ping 192.168.1.1 module_ping_count 2 module_ping_timeout 500 module_end </code> == module_snmpget == (Windows のみ) このモジュールは snmpget を実行し、その応答を返します。 次のパラメータを設定できます。 * module_snmpversion [1_2c_3]: SNMP バージョン (1 がデフォルト) * module_snmp_community <community>: SNMP コミュニティ (public がデフォルト) * module_snmp_agent <host>: 対象の SNMP エージェント * module_snmp_oid <oid>: 対象の OID * module_advanced_options: snmpget.exe の拡張オプション 例: <code> module_begin module_name SNMP get module_type generic_data module_snmpget module_snmpversion 1 module_snmp_community public module_snmp_agent 192.168.1.1 module_snmp_oid .1.3.6.1.2.1.2.2.1.1.148 module_end </code> ==== 自動エージェント設定 ==== === 概要 === Pandora FMS バージョン 725 から、エージェントを自動的に設定するための一連のルールを設定できます。 エージェントの自動設定処理は次のように動作します。 1- Pandora FMS コンソールまたは、Pandora FMS メタコンソールで、自動設定の準備をします。 2- Pandora FMS へ接続するエージェントをインストールします。(単一のコンソールの場合はエージェントの接続先は Pandora FMS サーバです。自動プロビジョニングを設定したメタコンソールがある場合は、メタコンソールをサーバとして設定します。) 3- Pandora FMS サーバが、エージェントのデータを含む XML (.data) を初回受信します。 4- 適用される自動設定を決定するためのルールが評価されます。 5- エージェントが新たな設定を受け取り、次回の処理から更新された設定で動作します。 === 自動エージェント設定の作成 === 自動設定画面へは次のようにアクセスできます。 コンソール 管理(Management) > 自動エージェント設定管理(Manage automatic agent configuration) メタコンソール 拡張 > エージェント管理 > 自動エージェント設定 管理ページにアクセスしたら、“自動設定の作成(Create automatic configuration)” ボタンをクリックすることにより新たな自動設定を作成することができます。 自動設定の名前と説明を設定します。 新たな自動設定を作成したら、必要な項目をクリックすることにより設定フォームを表示できます。 == ルール == 自動設定を適用するエージェントを定義するには、ルールを追加します。 自動設定のルールセクションを表示し、“新規ルール追加(Add new rule)” を選択します。 設定対象のエージェントを特定するために、ルールのオプションを選択できます。 Server name マッチするサーバ名 Group name マッチするグループ名 OS マッチする OS 名 (正規表現) Custom field エージェントが報告してくる、キー/値 のカスタムフィールドマッチ。カスタムフィールド名と値を指定する必要があります。 IP range IP の範囲(ネットワーク)にマッチ。IP/ネットマスク の書式を追加います。例: 192.168.1.0/24 Script output (> 0) スクリプトの実行結果で、標準出力の結果が 0より大きい場合にルールにマッチしたと評価されます。 ルールスクリプトでは、'arguments' フィールドに次のマクロが使えます。 _agent_ エージェント名に置き換えられます。 _agentalias_ エージェントの別名に置き換えられます。 _address_ エージェントから報告された IP アドレスに置き換えられます。 _agentgroup_ エージェントから報告されたグループ名に置き換えられます。 _agentos_ エージェントの OS で置き換えられます。 ルールの適用条件で <i>AND</i> および <i>OR</i> を選択できます。 注意: ルールが無い場合は、自動設定は適用されません。 全てのエージェントに対して一つの設定でよい場合は、すべての<i>別名</i>にマッチする次の正規表現を使うことができます。 .* == 設定 == ここから設定に進みます。 エージェントグループ 変更せずにそのままとするか、強制的に変更します。 セカンダリグループ エージェントにセカンダリグループとして追加するグループを選択します。 ポリシー エージェントがサーバに接続してきたときに適用するポリシーを選択できます。 設定ブロック エージェントの設定ファイルに追加する設定内容です。 注意: 集中管理が有効なメタコンソールに属するノードから自動設定管理を行おうとすると、リードオンリー表示になります。 == 追加アクション == ここでは、自動設定に追加のアクションを行うことができます。例えば以下のような処理です。 - 独自イベントを出す - アラートアクションを実行する - スクリプトを実行する システムは、次のマクロをサポートします。 _agent_ エージェント名に置き換えられます。 _agentalias_ エージェントの別名に置き換えられます。 _address_ エージェントが報告した IP アドレスに置き換えられます。 _agentgroup_ エージェントが報告したグループ名に置き換えられます。 _agentos_ エージェントの OS に置き換えられます。 _agentid_ エージェント ID に置き換えられます。 ==== Unix/Linux エージェント ==== UNIX には、簡単にデータを収集できるいくつかのコマンドラインツールがあります。UNIX エージェントはこれをベースにしており、次の 2つの種類があります。 * ShellScript:さまざまな OS にある、bash、ksh、csh などのシェルスクリプトを用いたエージェントです。Linux や MAC 向けにはすべての機能が実装されていますが、伝統的な UNIX システム (Solaris、AIX、HPUX) 向けには、すべての機能は実装されていません。 * Perl:全ての UNIX システムで動作する、Perl 5.8 をベースにしたマルチプラットフォームエージェントです。Perl 5.8 以上が必要です。 シェルスクリプトエージェントは、古い UNIX (HPUX11.0、AIX 4.1、Solaris 2.6 など) でも動くように作られています。ただし、機能は制限されており、Tentacle クライアントがありません。サーバにモニタデータをアップロードするには、FTP もしくは SSH を利用する必要があります。 === Pandora FMS Unix エージェントの設定 === 把握しておくべき基本的なファイルとディレクトリは次のとおりです。 * /usr/share/pandora_agent/: Pandora FMS エージェントがインストールされる場所です。厳密なシステムポリシーがあり、ここにインストールできないシステムでは、実際のインストールパスからこのパスへのリンクを作成することを推奨します。例: '/opt/pandora' → '/usr/share/pandora_agent' * /etc/pandora/pandora_agent.conf: エージェントのメインの設定ファイルです。ここにデータの収集に使うコマンドの定義がされています。 * /usr/local/bin/pandora_agent: Pandora FMS エージェント本体です。これは、pandora_agent.conf で設定されたデータ収集を行うシェルスクリプトです。これはまた、Pandora サーバにデータパケットを送信します。通常、/usr/bin/pandora_agent にリンクされています。 * /usr/local/bin/tentacle_client: サーバにデータファイルを送信するためにエージェントが追加する Tentacle クライアントです。これは、Perl 5.8 で動作するように作られています。通常、/usr/bin/tentacle_client にリンクされています。 * /etc/init.d/pandora_agent_daemon: エージェントの起動スクリプトです。pandora_agent を呼び出します。オプションとして、start/stop を利用できます。AIX システムでは、/etc/rc.pandora_agent_daemon です。 * /var/log/pandora/pandora_agent.log: Pandora FMS エージェントがデバッグモードで動作している時にログが出力されるログファイルです。 * /etc/pandora/plugins: エージェントプラグインを置くディレクトリです。これは /usr/share/pandora_agent/plugins にリンクされています。 */etc/pandora/collections: エージェントのコレクションを置くディレクトリです。これは /usr/share/pandora_agent/collections にリンクされています。 === Unix エージェントの実行 === エージェントの起動は以下のようにします。 /etc/init.d/pandora_agent_daemon start エージェントの停止は以下のようにします。 /etc/init.d/pandora_agent_daemon stop 起動スクリプトで Pandora FMS エージェントの起動・停止ができます。デフォルトでは起動後はデーモーンとして動作します。 === Unix エージェントでシステム情報を取得する別の方法 === 設定の章で示した通り、module_exec で特定のコマンドを実行することなく定義済の情報を取得できるモジュールがあります。以下がそれらです。 * module_procmem * module_freedisk * module_freepercentdisk * module_cpuproc * module_proc * module_procmem * module_cpuusage * module_freememory * module_freepercentmemory これらのモジュールの動作は、エージェントの実行ファイル (デフォルトでは /usr/bin/pandora_agent) を直接編集することにより変更できます。Pandora FMS エージェントは一般的に /usr/bin/pandora_agent にあります。コマンド名で検索することにより、内部コマンドを含むコードを見つけます。システムに合わせて変更する場合は、修正を行います。 <code> # Commands to retrieve total memory information in kB use constant TOTALMEMORY_CMDS ⇒ { linux ⇒ 'cat /proc/meminfo | grep MemTotal: | awk \'{ print $2 }\, solaris ⇒ 'MEM =`prtconf | grep Memory | awk \'{print $3}\'` bash -c \'echo $2)\, hpux ⇒ 'swapinfo -t | grep memory | awk \'{print $2}\ }; </code> <code> # Commands to retrieve partition information in kB use constant PART_CMDS ⇒ { # total, available, mount point linux ⇒ 'df -P | awk \'NR > 1 {print $2, $4, $6}\, solaris ⇒ 'df -k | awk \'NR > 1 {print $2, $4, $6}\, hpux ⇒ 'df -P | awk \'NR > 1 {print $2, $4, $6}\, aix ⇒ 'df -kP | awk \'NR > 1 {print $2, $4, $6}\ }; </code> 情報取得のための定義済の値を変更するには、コマンドを編集するだけですが、以下に注意します。 - 行の終わりに “;” があることを確認 - コマンドが ' ' でくくられているか確認 - ' を使う場合は、次のように \ でエスケープしているか確認 df -P | awk 'NR > 1 {print $2, $4, $6}' 上記は以下のようになります。 df -P | awk \'NR > 1 {print $2, $4, $6}\' ==== Pandora FMS Windows エージェント ==== === Pandora FMS Windows エージェントの設定 === Windows エージェントの基本的なパスやディレクトリは、エージェントをインストールした場所になります。デフォルトでは C:\Program files です。理解しておきたい基本的なファイルは次の通りです。 * C:\Program Files\pandora_agent: Pandora FMS エージェントの実行ファイルやディレクトリがあるインストール先です。 * C:\Program Files\pandora_agent\pandora_agent.conf: エージェントの設定ファイルです。実行モジュールおよびエージェントプラグインの設定はここにあります。 * C:\Program Files\pandora_agent\PandoraAgent.exe: エージェントの実行バイナリです。 * C:\Program Files\pandora_agent\util\tentacle_client.exe: サーバへファイルを転送するための Tentacle 実行バイナリです。 * C:\Program Files\pandora_agent\scripts: Pandora FMS エージェントの起動・停止・再起動スクリプトです。 * C:\Program Files\pandora_agent\pandora_agent.log: Pandora FMS エージェントがデバッグモードで実行されたときに出力されるログファイルです。 * C:\Program Files\pandora_agent\util: エージェントプラグインを含むディレクトリです。 * C:\Program Files\pandora_agent\collections: エージェントのコレクションを含むディレクトリです。 ==== ソフトウエアエージェントの自動アップグレード ==== ファイルコレクションと pandora_update ツールを使って、ソフトウエアエージェントは自分自身の更新ができます。

    Pandora_update ツールは、Perl の Digest:MD5 モジュールが必要です。Perl 5.14 からはデフォルトで含まれていますが、古いバージョンでは手動でインストールしておく必要があります。

    これは、次のように動作します。 1. エージェントが、例えば次のようなファイルコレクションの incoming ディレクトリに新たなバイナリを受信します。 Windows の例: c:\program files\pandora_agent\collections\fc_1\PandoraAgent.exe Linux の例: /etc/pandora/collections/fc_1/pandora_agent 2. エージェントは、pandora_update プラグインを実行します。このプラグインは、コレクションの短い名前をパラメータとして受け取ります(この例では fc_1)。コレクションディレクトリ内のエージェントバイナリをスキャンし、現在動作しているものと比較します。違いがあれば、pandora_update がエージェントを停止し、バイナリを置き換え、新しいバイナリを使ってエージェントを再起動します。 異なるアーキテクチャのアップデートを行うには、それぞれ異なるコレクションを用意する必要があります。例えば、32bit および 64bit の Windows エージェントをアップデートする必要がある場合は、2つのコレクションを作成し、それぞれに対応した PandoraAgent.exe バイナリを含める必要があります。 3. Pandora_update はまた、async_string モジュールを使うことによって、次の実行タイミングでユーザに通知を出せるように、エージェントのアップデートプロセスに関するアップデートイベントログを出力します。 以下がアップデートプロセスで使うモジュールです。間隔は長めに設定します。 Unix 通常インストール <code> module_begin module_name Pandora_Update module_type async_string module_interval 20 module_exec nohup /etc/pandora/plugins/pandora_update fc_1 2> /dev/null && tail -1 nohup.out 2> /dev/null module_description Module to check new version of pandora agent and update itself module_end </code> Unix カスタムインストール <code> module_begin module_name Pandora_Update module_type async_string module_interval 20 module_exec nohup /var/opt/PandoraFMS/etc/pandora/plugins/pandora_update fc_1 /var/opt/PandoraFMS 2> /dev/null && tail -1 nohup.out 2> /dev/null module_description Module to check new version of pandora agent and update itself module_end </code> 注意: pandora_update コマンドの 2つ目のパラメータは、Pandora FMS のインストールパスです。このパラメータは、デフォルトのパスとは異なる場所に Pandora FMS をインストールした場合にのみ必要です。 Windows <code> module_begin module_name Pandora_Update module_type async_string module_interval 20 module_exec pandora_update.exe fc_1 module_description Module to check new version of pandora agent and update itself module_end </code> ==== XML ファイルからのエージェント・モジュールの自動作成 / 学習モード ==== エージェントは、コンソールから 3つの動作モードを設定できます。 * 学習モード(Learning mode): ソフトウエアエージェントから新たなモジュールを含む XML を受け取ると、それらが自動的に作成されます。これがデフォルト動作です。

  • 通常モード(Normal mode): コンソールに存在しない新たなモジュールを XML で受け取っても作成しません。 * 自動無効化モード(Autodisable mode): 学習モードに似ていますが、すべてのモジュールが不明状態になった場合にエージェントを自動的に無効化します。新たな情報を受け取ったときに改めて自動化します。

エージェント作成時に XML からロードされるデータ

XML を受け取ったときにエージェントの作成とともに自動的に取り込まれるデータは次の通りです。

  • エージェント名
  • エージェントのIPアドレス
  • エージェントの説明
  • エージェントの親
  • タイムゾーンオフセット
  • グループ
  • OS
  • エージェントの実行間隔
  • エージェントのバージョン
  • カスタムフィールド
  • カスタムID
  • URL アドレス
  • エージェントモード: 学習、通常、自動無効化

XML を受け取ったときに修正されるデータ (学習モード有効時)

  • エージェントの IP アドレス
  • エージェントの親
  • OSバージョン
  • エージェントのバージョン
  • タイムゾーン
  • カスタムフィールド

GIS データは(GIS が有効の場合)、学習モードが有効であるか無効であるかに関わらず、常に更新されます。

加えて、学習モードが有効の場合、XML ファイルで受け取った新たなモジュールは、Pandora で作成されます。

作成時にモジュールに追加されるデータ

初回の各モジュールの XML 受信時に反映されるデータは次の通りです。

  • 名前
  • タイプ
  • 説明
  • フィルタの最大・最小値
  • 保存倍率
  • モジュール実行間隔
  • 障害の最大・最小値
  • 警告の最大・最小値
  • 無効化モジュール
  • 単位
  • モジュールグループ
  • カスタムID
  • 文字列の警告・障害
  • 障害時手順
  • 警告時手順
  • 不明時手順
  • タグ
  • 障害反転モード
  • 警告反転モード
  • 静観モード
  • 連続抑制回数
  • アラートテンプレート
  • Crontab

モジュールがすでに存在する場合に反映されるデータ

すでに存在するモージュールのデータを XML で受け取った場合は、モジュールのデータに加えて説明および拡張情報のみ更新されます。