Pandora: Documentation ja: Anexo Server plugins developement

From Pandora FMS Wiki
Revision as of 03:06, 26 October 2013 by Junichi (talk | contribs) (サーバプラグイン開発)
Jump to: navigation, search

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

1 サーバプラグイン開発

1.1 サーバプラグインの基本機能

サーバプラグインは、Pandora FMS プラグインサーバにより実行されるため、次に示す特別な機能を備えている必要があります。

  • プラグインの実行では単一の値を返す必要があります。サーバプラグインは、プラグインモジュールによって実行されるためです。
  • リモートで監視対象のリソースにアクセスできる必要があります。
  • Pandora サーバのインストール先の OS がサポートする任意のプログラミング言語を利用することができます。
  • プラグインの実行に必要な依存ソフトウエアは、Pandora サーバを実行するのと同一のマシンにインストールされている必要があります。

1.2 Pandora サーバプラグイン Zip ファイル (.pspz)

Pandora FMS 3.0では、プラグインおよび新しいプラグインを(プラグインに依存した、モジュールのライブラリのように)使用するモジュールを登録する新しい方法があります。基本的には、以下で説明する.pspzフォーマットのファイルをアップロードする管理コンソール拡張機能です。システムでファイルを読み込み、展開後、バイナリファイルとスクリプトをシステムにインストールし、Pandora FMSのモジュールライブラリへのプラグインの登録と.pspzファイル中で定義されたすべてのモジュール生成を行います。

この節では、.pspzファイルの作成方法について説明します。

1.3 パッケージファイル

.pspz ファイルは2つのファイルからなるzipファイルです。

plugin_definition.ini: プラグインとモジュールの仕様を含むファイル。ファイル名(大文字と小文字は区別されます)は固定です。

<script_file>: プラグインスクリプトもしくはバイナリファイルそのもの。ファイル名は自由につけることができます。

[1] ここに.pspzファイルのサンプル(ファイル名は.zipに変更されています)があります。

1.4 plugin_definition.ini の構造

1.4.1 ヘッダー/定義

これがオプションセクションを持つ標準的なINIファイルです。 最初のセクションは最も重要で、セクション名は"plugin_definition"固定です。 以下に例を示します。

[plugin_definition]
name = Remote SSH exec
filename = ssh_pandoraplugin.sh
description = This plugin execute remotely any command provided
timeout = 20
ip_opt = -h
execution_command = 
execution_postcommand = 
user_opt = -u
port_opt = 
pass_opt = 
plugin_type = 0
total_modules_provided = 1

filename: 先に<script_file>で参照されていた、.pspzファイルに含まれるスクリプト名と同じ値となります。このサンプルでは"ssh_pandoraplugin.sh"というシェルスクリプトです。

*_opt: プラグインに登録するオプションを指定します。Pandora FMSコンソールで"手動で"プラグインを登録するフォームに表示されるものと同様のものです。

plugin_type: 標準的なPandora FMSプラグインの場合は0、Nagiosタイププラグインの場合は1を指定します。

total_modules_provided: 以下で定義するモジュールの数を指定します。必要最小限の値を指定してください(XXX)

execution_command: 値が設定された場合、スクリプトの前に値が追加されます。"java -jar"といったインタプリタを指定する際に設定されます。したがって、プラグインはPandora FMSプラグインサーバから"java -jar <plugin_path>/<plugin_filename>"と実行されます。

execution_postcommand: 値が設定された場合、追加パラメータがplugin_filenameの後にプラグインに渡されます。追加パラメータはユーザには見えません。

1.4.2 モジュール定義 / ネットワークコンポーネント

これは動的セクション(セクション名に増加する数値を持つ)として定義され、必要な数だけ作成することができます。ここで定義したモジュール数と同じ値を、前のセクションのtotal_modules_providedに設定する必要があります。 もし4個のモジュールがある場合、セクション名はmodule1, module2, module3, module4となります。

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

[module1]
name = Load Average 1Min
description = Get load average from command uptime
id_group = 12
type = 1
max = 0
min = 0
module_interval = 300
id_module_group = 4
id_modulo = 4
plugin_user = root
plugin_pass = 
plugin_parameter = "uptime | awk '{ print $10 }' | tr -d ','"
max_timeout = 20
history_data = 1
min_warning = 2
min_critical = 5
str_warning = "peligro"
min_critical = "alerta"
min_ff_event = 0
tcp_port = 0
critical_inverse = 0
warning_inverse = 0
critical_instructions = "Call the boss"
warning_instructions = "Call NASA"
unknown_instructions = "I want a pizza and maybe beer"

注意すべき点がいくつかあります。

  1. どのフィールドも"忘れない"こと。すべてのフィールドが必須となっています。設定値がない場合は、上記例のplugin_passフィールドのように空白にしておくこと
  2. 上記例のplugin_parameterフィールドのように、特殊文字や空白を含む値を定義する場合はダブルクォートで囲むこと。INIファイル中に ' " / - _ ( ) [ ] と言った文字を含む場合はダブルクォートを使用すること。データ中に " を含まないようにしましょう。もし必要になった場合は \" とエスケープしましょう
  3. フィールドの意味や目的がよくわからない場合は、Pandora FMS データベースの tnetwork_component を参照してください。ほとんど同じフィールドがあります。ネットワークコンポーネントを作成する時は、利用するプラグインとデータベースに保存される全ての値を確認しながら作成してみてください。
  4. id_moduleの値は常に4(これがプラグインモジュールであることを意味します)です。
  5. typeはモジュールの種類を指定します。ttipo_moduloテーブルでgeneric_data (1), generic_proc (2), generic_data_string (3), generic_data_inc (4)が定義されています。
  6. id_groupはグループ定義を含むtgrupoテーブルのPK(プライマリキー)を設定します。1は"全グループ"を意味し、特別なグループのようにふるまいます。
  7. id_module_groupの値はtmodule_groupテーブルを参照しており、XXXX。"1"を設定することで、一般モジュールグループを指定できます。

1.5 バージョン2

Pandora FMS バージョン5から、サーバプラグインはマクロを利用します。

この変更により、plugin_definition.ini が変更になっています。バージョンパラメータが追加され、ip_opt, user_opt, port_opt, pass_opt がなくなりました。代わりに、execution_postcommand パラメータに、_field1_ , _field2_ ... _fieldN_ マクロを追加できます。

それぞれのマクロは、macro_desc_field1_ , macro_desc_field2_ ... macro_desc_fieldN_ という構造のパラメータを持ちます。マクロの短い説明に続けて指定します。

この新たな構造をバージョン2 とします。

Info.png

旧バージョンの互換性もあります。バージョンパラメータが定義されてなければ、バージョン1 と想定します。

 


1.5.1 バージョン2 のプラグイン定義例

[plugin_definition]
version = 2
name = Remote SSH exec
filename = ssh_pandoraplugin.sh
description = This plugin execute remotely any command provided
timeout = 20
execution_command = 
execution_postcommand = -h _field1_ -u _field2_
macro_desc_field1_ = Host address
macro_desc_field2_ = User
plugin_type = 0
total_modules_provided = 1