ソフトウェアエージェントは、情報を収集するオペレーティングシステム上で実行され、モジュールごとにチェックを実行します。
ソフトウェアエージェント独自のディレクティブは、オペレーティングシステムから特定のデータ (CPU 使用率、メモリ、イベントなど) を直接収集するために使用され、事前定義されたスクリプトの指示に従って オペレーティングシステム独自のコマンド を実行します。
Pandora FMS データサーバは、ソフトウェア エージェントによって生成され XML ファイルで送信されたすべての情報を処理し、データベースに保存します。
すべての設定とパラメータは pandora_agent.conf ファイルに保存され、このファイルはソフトウェアエージェントと一緒にローカルにインストールされます。 基本的な設定については "Pandora FMS エージェントの設定" で説明しています。高度な設定については以下で説明しています。
ソフトウエアエージェントの設定ファイルでは、以下のテキストの基本構造でモジュールが定義されています。
module_begin module_name <your module name> module_type generic_data module_exec <your command> module_description <your description> module_end
module_name
: モジュールの名前。module_exec
: 実行されるコマンド。module_description
: 監視タスクの説明。例 1
module_begin module_name Files in var spool module_type generic_data module_exec ls /var/spool | wc -l module_description Number of files incoming dir module_end
*nix 環境 では、コマンド ls はディレクトリファイルを一覧表示します。行 module_exec でそれを実行し、行数をカウントする wc コマンドに値を渡します。 この実行によって返される値は、モジュールが取得するデータであり、監視データとして表示されます。
module_name
に拡張 ASCII 文字 (áéíóú
など) を使用したい、または使用する必要がある場合は、外部プラグインまたはスクリプトを使用する必要があります。 ソフトウェアエージェントプラグインの章 を参照してください。module_exec_powershell
も使用できます。例 2
module_exec vmstat 1 2 | tail -1 | awk '{ print $13 }'
vmstat コマンドは、仮想メモリの統計をレポートします。この例では、必要な情報を “絞り込む” ための 2つの追加コマンドがあります。 最初にコマンドを手動で起動し、出力を分析することをお勧めします。
$> vmstat 1 2 | tail -1 | awk '{ print $13 }'
結果が要件を満たしていたら、設定ファイルに追加します。ソフトウェアエージェントを介した実行によって返される値は、モジュールデータとして XML に格納されます。
例3
出力が Pandora FMS で受け入れられる値(数値、英数字、または、ブール値)をサポートしていれば、module_exec を介して任意のコマンドまたはソフトウェアを実行できます。そのため、カスタムスクリプトを指定することができます。
module_exec myScript.pl --h 127.0.0.1 -v cpu
この場合も、エージェントはシェルを実行し、オペレーターによって実行されたかのように結果を取得します。
$> myScript.pl --h 127.0.0.1 -v cpu
リモート設定を有効にするには、パラメータ remote_config 1
を設定し、ソフトウエアエージェントを再起動します。
Pandora FMS ウェブコンソールからソフトウェアエージェントのファイルをリモートで管理できます。 各エージェントの設定は、Pandora FMS サーバの <md5>.conf と <md5>.md5 という 2 つのファイルに保存されます。<md5> はソフトウェア エージェント名のハッシュです。 これらのファイルはそれぞれ次の場所に保存されます。
/var/spool/pandora/data_in/conf
および
/var/spool/pandora/data_in/md5
エージェントのリモート設定を有効にしたあとは、ローカルの設定ファイルを変更してもコンソールに保存されている設定で上書きされます。これをソフトウェアエージェントのローカル管理に戻したい場合は、ソフトウエアエージェントのサービスを停止し、remote_config
をゼロにリセットして、サービスを再度開始します。
カスタムフィールドを使用すると、エージェントに追加情報を追加できます。 カスタムフィールドは、PFMS 1.0 API とコマンド set create_custom_field を使用して作成するか、ウェブコンソールのメニュー 管理(Management) → リソース(Resources) → カスタムフィールド(Custom fields) → フィールドの作成(Create field) を使用して作成できます。
<![CDATA[…]]>
が埋め込まれた XML にリンクを含めることができます。 たとえば、リンクの JSON 形式が次の場合、["Web name","https://example.com"]
XML は次のような書式になります。
<custom_fields> <name>![CDATA[web]]</name> <value>![CDATA[["Web name","https://example.com"|]]]</value> </custom_fields>
XML の確認、Tentacle プロトコルのセキュリティアーキテクチャ(XML フォーマットでの Pandora FMS データサーバへのデータ送信の仕組)、Pandora FMS データサーバのセキュリティアーキテクチャ(エージェントの自動作成の制限、各エージェントが属するエージェントグループのパスワード設定) を参照してください。
カスタムフィールドは、custom_fieldx_name および custom_fieldx_value トークンを用いて、エージェント設定ファイルから渡すこともできます。 例:
custom_field1_name Serial Number custom_field1_value 56446456KS7000
シリアル番号(Serial Number)
と呼ばれるカスタムフィールドは、Pandora FMS のインストール時にデフォルトで作成されます。カスタムフィールドは必要に応じて必要なだけ作成でき、それぞれのタイプ (単一値、ウェブリンク、パスワードタイプ、およびオプションリストタイプ) を作成できます。 各カスタムフィールドの数値識別子の順序は関係ありません。名前がまったく同じであることを確認する必要があるだけです。
custom_field11_name Simple custom field name custom_field11_value Simple custom field value custom_field12_name Custom field Link type custom_field12_value ["Pandora FMS web site","https://pandorafms.com"] custom_field13_name Custom field Password type custom_field13_value My;Password; custom_field14_name Custom field Combo type custom_field14_value Two
カスタムフィールド Combo type
では、ソフトウェア エージェントによって送信される値がその項目の 1 つに正確に一致する必要があります。そうでない場合、値は変更されません。
基本的なエージェント設定における、最も重要なパラメータ (より詳細は、Pandora FMS ソフトウエアエージェント を参照してください):
/var/spool/pandora/data_in
です。/var/spool/pandora/data_out
です。/var/log/pandora/pandora_agent.log
です。300
です。デフォルトでは、エージェントが初めて Pandora FMS サーバにデータを送信すると、そのデータはエージェント設定ファイルで定義されているグループに自動的に追加されます。
オプションで、Pandora FMS コンソールからグループのパスワードを設定できます。この場合、エージェント設定ファイルで正しいパスワードが指定されていない限り、エージェントはグループに追加されません。
グループパスワードを編集して追加するには、管理(Management) メニュー → プロファイル(Profiles) → エージェントグループ管理(Manage agent groups) に移動し、グループ名をクリックします。
このグループに新しいエージェントを追加するには、その設定ファイルを編集し、設定オプション group_password
を追加し、エージェントソフトウェアを再起動します。
データのタイプに応じた、ソフトウエアエージェントのモジュールのタイプは次の通りです。
ローカルモジュール(ソフトウエアエージェントのモジュール)には、ベースとしてエージェントの実行間隔があります。ただし、module_interval パラメータにゼロより大きい整数を設定することによって、エージェントの実行間隔にそれを乗じた値をモジュールの実行間隔とすることができます。例:
module_interval 2
この場合、エージェントの実行間隔が 300 のとき、モジュールの実行間隔は 300×2 (600) になります。
ソフトウエアエージェントのリモート設定を有効化する必要があります。
コンソールからのローカルモジュールの作成は、リモートモジュール(の閾値、タイプ、グループなど)と同様に、フォームを利用して行います。設定データを指定するテキストボックスがあり、ソフトウエアエージェントの設定ファイルが表示されています。
モジュールがローカルコンポーネントからロードされる場合、マクロが含まれる場合があります。 マクロがある場合、設定ボックスは非表示のままになり、マクロごとにフィールドが表示されます。詳細については、テンプレートとコンポーネント を参照してください。
Pandora FMS ソフトウエアエージェントは、モジュールの実行結果の値に応じたスクリプトの実行をサポートしています。これは、モジュールの実行で得られた値に応じてアクションを行えることを意味します。
例 1
値または値の範囲を示す module_condition パラメータを使用して、取得したデータが条件(CPU 使用率が 200%未満)を満たす場合に、実行する内容を設定します。
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
例 2
同じモジュールに対して、範囲内や最小しきい値を指定した複数の条件を指定できます(数学的には、両方のオプションのいずれかが実行されるか、まったく実行されません)。
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
例 3
前の例に似ていますが、両方の条件を実行することも、1つまたはまったく実行しないこともできます(選択した値で試してください: 5、15、または 30 の場合)。
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
module_precondition パラメータにて、モジュール実行前の事前処理を定義します。この事前処理により、ソフトウエアエージェントはモジュールを実行するかどうか決めます。
module_precondition に想定する値を割り当て、条件と比較する必要があります。
例 1
アクティブなプロセスが 10 を超える場合、CPU 使用率のパーセンテージを取得し、Pandora FMS サーバにレポートします。
module_begin module_name CPU_Usage module_type generic_data module_precondition> 10 number_active_processes.sh module_exec get_cpu_usage.pl module_end
例 2
同じモジュールに対して複数の前提条件を定義でき、それらすべてが満たされている必要があります。
module_begin module_name CPU_Usage module_type generic_data module_precondition> 10 number_active_processes.sh module_precondition> 1 important_service_enabled.sh module_exec get_cpu_usage.pl module_end
この場合、アクティブなプロセスが 10 を超えており、そのうちの少なくとも 1つが重要なプロセスである場合にのみモジュールが実行されます。
重要な実行プロセスやサービスなど、特に重要なモジュールが存在する場合があります。 これらのケース向けに、より制御された監視を可能にする集中監視が利用できます。
エージェントの通常の実行間隔を短くすることなく、問題が発生した場合にのみ短い間隔で監視をします。
ソフトウエアエージェントの設定:
モジュール設定:
sshd サービスは、シェルでリモート接続するために使用されるため非常に重要です。その動作を監視する必要があります。 次の例は、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分後です。
ソフトウエアエージェントは、モジュールを指定時間に実行する設定ができます。書式は crontab と同じです。モジュールの設定例は次の通りです。以下は、モジュールを毎月曜の 12 から 15時の間に実行する例です。
module_begin module_name crontab module_type generic_data module_exec script.sh module_crontab * 12-15 * * 1 module_end
モジュールを毎時 10分に実行したい場合は、次のようにします。
module_begin module_name crontab module_type generic_data module_exec script.sh module_crontab 10 * * * * module_end
モジュールがデータを出力しない期間を設定した場合、モジュールは “不明” 状態になります。このような場合は非同期モジュールを利用します。
Pandora FMS サーバが(セキュリティ上の理由などから)直接アクセスできないシステムに対してリモートチェックを行う場合に使用します。ソフトウェアエージェントをインストールし、そこからリモートチェックを実行し、ブローカエージェントで配布することができます。
ICMP もしくは ping の監視は、マシンがネットワークにつながっているかどうかを確認するのに便利です。単一のソフトウェアエージェントがすべてのマシンのステータスを簡単に監視できます。
Unix
システムコマンドを利用して ping チェックを実行するモジュールを作成することができます。 (すべてのパラメータは module_exec
の “コマンドライン” にあります)
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
パラメータは、module_ping_count
(パケット数、デフォルトは 1) および module_ping_timeout
(秒単位のタイムアウト値、デフォルトは 1
) で指定する必要があります。以下に例を示します。
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
注意: module_advanced_options
で、ping.exe
の高度なオプションを指定できます。
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_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番ポートに対してチェックを行います。
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_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 のソフトウエアエージェントと同じ動作をします。
Linux/Unix システムで、エージェントのプロキシモードを利用するためには、エージェントを root 以外のユーザで実行 する必要があります。そのため、Pandora FMS エージェントのカスタムインストールが必要です。カスタムインストールの詳細については、エージェントのカスタムインストールを参照してください。
Pandora FMS ソフトウエアエージェントには、エージェントから Pandora FMS サーバへの通信をプロキシするする、プロキシモードがあります。プロキシモードを有効にしたソフトウエアエージェントは、モニタリング処理も実行可能です。
プロキシモードは、1台のマシンのみ Pandora FMS サーバと通信できないといったネットワークの場合にとても便利です。この場合、すべてのマシンにインストールされたソフトウエアエージェントは直接 Pandora FMS サーバへは通信できず、XML ファイルをプロキシとして動作しているエージェントに送ります。プロキシはそれを Pandora FMS サーバへ送信します。
プロキシモードでは、XML ファイル送信をプロキシすることに加えて、リモート設定 および ファイルコレクション の機能もサポートしています。
これらの機能により、プロキシモードは接続が制限されたネットワークでのソフトウエアエージェントの「透過的な操作」を提供します。
プロキシモードを有効にするには、ソフトウエアエージェントにて次のパラメータを設定します。
設定例を以下に示します。
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 サーバと直接通信ができないソフトウエアエージェントが、プロキシモードの他のソフトウエアエージェントを経由して通信できるようになります。リモート設定、ポリシー、ファイルコレクションといったすべての機能が利用できます。
ソフトウエアエージェントには、複数のソフトウエアエージェントがインストールされているかのように一つのエージェントを設定し、モニターするブローカーモードがあります。
ブローカーモードを有効にしたソフトウエアエージェントは、新たな設定ファイルを生成します。同一のマシンで複数のソフトウエアエージェントを動かすのと同じように、オリジナルのソフトウエアエージェントと新たなブローカーがそれぞれの設定ファイルで動作します。
ブローカーモードのメインの機能は次の通りです。
ブローカーを設定するには、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 と MS Windows® における module_regexp) は動作しません。
マシンの基本的な情報(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 というモジュールがあります。
この例では、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 です。
デバイスをリモートからモニタする必要があるが、Pandora FMS のリモートサーバがそれらに直接通信できない場合があります。
この例では、本社からある会社のサイトのデバイスをリモートからモニタする必要があるとします。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 サーバへ送信することができます。
ブローカーモードは、複数のネットワークでモニタリングの負荷を分散するのにとても便利です。
この例では、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
ソフトウエアエージェントをブローカーモードを有効にして使うことで、数千のデバイスからのデータを簡単に負荷分散して収集することができます。
Pandora FMS ソフトウエアエージェントは、ハードウエアおよびソフトウエアのインベントリの機能をサポートします。インベントリシステムは、企業のサーバで使われている CPU、拡張カード、メモリ、パッチ、ソフトウエアなどの情報を取得することができます。また、インベントリに変化が発生したときにアラートを上げることもできます。例えば、ディスクを交換したり、アプリケーションが削除されたときです。
より詳細の情報は、ソフトウエアエージェントによるローカルインベントリを参照してください。
詳細に関しては、ログ収集と監視 を参照してください。
ソフトウェアエージェントは、リモートリクエストを受信して処理を実行することができます。
UDP は本質的に安全ではないことに注意してください(ただし、応答を損なうことなくメッセージを送信するには効率的です)。
Pandora FMS サーバが担当するソフトウェアエージェントに要求を送信できるようにするには、以下を設定します。
変更を適用するためにソフトウエアエージェントを再起動します。
どこからでも要求を受け入れるために 0.0.0.0 に設定できますが、この方法はお勧めしません。 複数の Pandora FMS サーバがある場合や IPv6 を利用している場合は、異なる IP をカンマで区切って設定できます。たとえば、IPv6 で 2001:0db8:0000:130F:0000:0000:087C:140B
がある場合、その省略形は 2001:0db8:0:130F::87C:140B
です。両方をコンマで区切って使用します。
以下のスクリプトを利用する必要があります。
/usr/share/pandora_server/util/udp_client.pl
コマンドラインやから実行したり、コンソールの 設定済のコマンド “Remote agent control” を使ったアラートで使うことができます。
ソフトウェアエージェントサービスの再起動アクションに加えて、カスタムアクションを指定できます。
process_<order_name>_start command
例えば、リモートから sshd サービスを起動したい場合は次のようにします。
process_sshd_start /etc/init.d/sshd start
ボタンをクリックするだけで複数のリモートアクションを実行するスクリプトを呼び出すコマンドを作成することもできます。
プラグインは、ソフトウェアエージェントから複雑で高度なチェックを実行することができるものです。単一の値だけではなく、複数のモジュールを返すことができます。 Pandora FMS サーバによって実行されるサーバプラグインとは異なり、エージェントプラグインはXMLでデータを返し、同時に1つまたは複数のモジュールのデータを返します。
Windows では、デフォルトの全プラグインは、VBScript でプログラムされています。これらを実行するには、フルパスで適切なインタプリタを使用する必要があります。
以下に、Windows エージェントにデフォルトで含まれているプラグインのいくつかの使い方を示します。
module_plugin cscript.exe //B "%ProgramFiles%\pandora_agent\util\logevent_log4x.vbs" Aplication 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 エージェントでは、さまざまなプラグインを使用できます。
バージョン 776 以降には、module_exec_powershell
があり、module_exec
モジュールの使用ではサポートされていない特殊文字や複雑な命令 (1 つの命令が次の命令に結果を渡す) を含む、より複雑なコマンドを PowerShell に入力できるようになります。
# Example of Powershell execution module module_begin module_name Powershell module_type generic_data_string module_exec_powershell < command_1 > | < command_2 > | … | < command_N > module_end
コマンドは、PFMS ソフトウェアエージェントによって処理されるように引用符無しにそのまま入力します (一方、PowerShell コマンドには引用符が必要な場合があります)。 コマンドが正しくない場合、エージェントログ (ファイル pandora_agent.log
) にエラーが追記されます。
Unix プラグインは、デフォルトでエージェントのディレクトリの “/plugin” 以下、/etc/pandora/plugins にあります。そのため、このディレクトリにある限りは実行時にフルパスを指定する必要はありません。
いくつかのプラグイン利用例を以下に示します。
module_plugin grep_log /var/log/syslog Syslog . module_plugin pandora_df tmpfs /dev/sda1
Unix ソフトウエアエージェントには、デフォルトでいくつかのプラグインが含まれています。
ソフトウエアエージェントのプラグインは、一つのデータもしくはグループ化したデータを返すことができます。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> <data><![CDATA[1]]></data> </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> <data><![CDATA[805000]]></data> </module> <module> <name><![CDATA[D:]]></name> <description><![CDATA[Drive D: free space in MB]]></description> <data><![CDATA[90000]]></data> </module>
module_begin
タグと module_end
タグ内にプラグイン定義を 'カプセル化' すると、エージェントのプラグイン設定にトークンを追加することができます。
module_interval
や module_crontab
などを、設定に入れることができるようになります。
プラグインは、任意のプログラミング言語で作成することができます。一般的なルール と開発の特別なルールに気を付けてください。
カスタムプラグインの終了コードは 0 になるようにしてください。そうでないと、Pandora FMS エージェントはプラグインでエラーが発生したものと認識し、出力を無視します。
#!/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
' 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
Nagios には多くのプラグインがあり、Pandora FMS で利用することができます。プラグインサーバで nagios 互換モード を使ってリモートでプラグインを利用することができます。 ただし、ステータスを取得するのみで、いくつかの nagios プラグインが持っている詳細情報を扱うことができません。
この問題は、ソフトウエアエージェントで nagios プラグインラッパーを使うことで解決できます。ラッパーは、Unix エージェントにデフォルトで付属しています。Pandora FMS Windows エージェント用の同様のプラグインは、 Pandora FMS リソースライブラリからダウンロードできます。
nagios プラグイン用のプラグインラッパーは何をするのでしょうか。
nagios プラグインをそれ独自のパラメータを使って実行し、出力データを Pandora FMS で使いやすいように、次のような 2種類のデータに変換します。
<![CDATA["OK: successfully logged in"]]>
実行権限がついた 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> <data>0</data> <description><![CDATA[Critical: unable to log on]]></description> </module>
または、
<module> <name>sancho_test</name> <type>generic_proc</type> <data>1</data> <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
これは、モジュール内で次のように表示されます。(障害時)
KeepAlive モジュールは、リモート設定が有効になっていない場合でも コンソールから作成することができます。また、pandora_agent.conf
ファイルの変更は発生しません。
Pandora FMS の固有のモジュールで keep_alive
と呼ばれるタイプで、ソフトウェアエージェントが情報の送信を停止した場合に警告するために使用されます。
設定には、モジュールタブに移動する必要があります (管理(Management) → エージェント管理(Manage agents) → エージェント名をクリック → モジュール(Modules))。
モジュールの作成(Create module) をクリックし、データサーバモジュールの新規作成(Create a new data server module) → 作成(Create) → 新しいモジュールの名前を入力 → 作成(Create) を選択します。
top
や netstat -n
などの複数行の出力を持つコマンドは、モジュールによって完全にキャプチャでき、完全に再現できます。 モジュールはテキストタイプとして設定する必要があります。例:
module_begin module_name process_table module_type generic_data_string module_exec ps aux module_description Command snapshot of running processes module_group System module_end
この監視では、base64 エンコードを使用したテキスト形式の画像を含む文字列型 (generic_data_string
または async_string
) のモジュールを定義でき、特定の文字列の代わりにその画像を表示できます。
例:
#!/bin/bash echo "<module>" echo "<name>Actual leader</name>" echo "<type>async_string</type>" echo "<data><![CDATA[data:image/jpeg;base64,/9j/4AAQSkZ....]]></data>" echo "</module>"
上記のファイルをエージェント上で保存し(またはファイルコレクションで配り)し、次のように実行します。
module_plugin <ファイルへのフルパス>
“ ”
を使用しない でください。.exe
を含め、Windows のタスク管理 ( taskmngr
) に表示されているものと同じである必要があります。module_proc パラメータは、指定した名前のプロセスがそのマシンで動いているかどうかをチェックします。例:
module_begin module_name CMDProcess module_type generic_proc module_proc cmd.exe module_description Process Command line module_end
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
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 "%SystemRoot%\notepad.exe" module_startdelay 3000 module_retrydelay 2000 module_retries 5 module_end
notepad.exe プロセスがいなくなるたびに、
%SystemRoot%\notepad.exe
が実行されます(Windows の章の冒頭にある一般的なルールを参照してください)。 また、再起動のリトライは 3秒間隔で 5回まで実施し、1回のタイムアウトは 2秒という設定です。この例では、notepad.exe プロセスはユーザのセッションで起動します。
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
プロセスと同様に、ダウンしたサービスを再起動できるウォッチドックモードがあります。ウォッチドックを使ったモジュール定義例は次の通りです。
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
ウォッチドックの定義には、特別なパラメータは必要ありません。サービスの定義内にあるためです。
MS Windows® 用 Pandora FMS ソフトウェアエージェントをインストールすると、必要な基本モジュールが含まれています。その一部は有効になっていますが、その他は リモート設定 (またはエージェントの .conf
ファイルをローカルで編集) によって有効化する必要があります。
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
メモリをモニタするには、システムの空きメモリ容量を返す 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
ディスクスペースをモニタするには、空き容量を返す 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
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