差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン | |||
ja:documentation:08_technical_reference:06_anexo_agent_plugins [2023/12/21 07:27] – [XMLの確認] junichi | ja:documentation:08_technical_reference:06_anexo_agent_plugins [Unknown date] (現在) – 削除 - 外部編集 (Unknown date) 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== エージェントプラグイン開発 ====== | ||
- | {{indexmenu_n> | ||
- | |||
- | [[ja: | ||
- | |||
- | ===== エージェントプラグイン開発 ===== | ||
- | |||
- | ==== エージェントプラグインの基本機能 ==== | ||
- | エージェントプラグインは、**Pandora FMS ソフトウエアエージェントで実行され**、いくつかの特別な機能があります。 | ||
- | |||
- | * それぞれのプラグインの実行では、一つまたは複数のモジュールの値を返します。出力は後述する XML フォーマットである必要があります。 | ||
- | |||
- | * ローカルマシンのリソースおよび、リモートで他のマシンのリソースの両方にアクセスすることができます。 | ||
- | |||
- | * Pandora ソフトウエアエージェントがインストールされている OS でサポートしている、任意のプログラミング言語を利用することができます。 | ||
- | |||
- | * プラグインを実行するために必要な依存プログラムは、Pandora ソフトウエアエージェントを実行するのと同じマシンにインストールされている必要があります。 | ||
- | |||
- | エージェントプラグインは、" | ||
- | |||
- | <WRAP center round important 60%> | ||
- | UNIX および Linux では、プラグインの終了ステータスは 0 でなければなりません。そうでないと、プラグインの出力は無視されます。 | ||
- | </ | ||
- | |||
- | ==== エージェントプラグイン開発の例 ==== | ||
- | 簡単なプラグインの例を説明します。このエージェントプラグインは、ファイルシステムの利用率を返します。プログラムコードは次の通りです。 | ||
- | |||
- | < | ||
- | # | ||
- | |||
- | use strict; | ||
- | |||
- | sub usage() { | ||
- | print " | ||
- | print " | ||
- | print " | ||
- | } | ||
- | |||
- | # Retrieve information from all filesystems | ||
- | my $all_filesystems = 0; | ||
- | |||
- | # Check command line parameters | ||
- | if ($#ARGV < 0) { | ||
- | $all_filesystems = 1; | ||
- | } | ||
- | |||
- | if ($ARGV[0] eq " | ||
- | usage(); | ||
- | exit(0); | ||
- | } | ||
- | |||
- | # Parse command line parameters | ||
- | my %filesystems; | ||
- | foreach my $fs (@ARGV) { | ||
- | $filesystems{$fs} = ' | ||
- | } | ||
- | |||
- | # Retrieve filesystem information | ||
- | # -P use the POSIX output format for portability | ||
- | my @df = `df -P`; | ||
- | shift (@df); | ||
- | |||
- | # No filesystems? | ||
- | if ($#df < 0) { | ||
- | exit 1; | ||
- | } | ||
- | |||
- | # Parse filesystem usage | ||
- | foreach my $row (@df) { | ||
- | my @columns = split (' ', $row); | ||
- | exit 1 if ($#columns < 4); | ||
- | $filesystems{$columns[0]} = $columns[4] if (defined ($filesystems{$columns[0]}) || $all_filesystems == 1); | ||
- | } | ||
- | |||
- | while (my ($filesystem, | ||
- | |||
- | # Remove the trailing % | ||
- | chop ($use); | ||
- | |||
- | # Print module output | ||
- | print "< | ||
- | print "< | ||
- | print "< | ||
- | print "< | ||
- | print "< | ||
- | print "</ | ||
- | } | ||
- | |||
- | exit 0; | ||
- | </ | ||
- | |||
- | コードの重要部分は、利用方法を表示する関数です。 | ||
- | |||
- | < | ||
- | sub usage() { | ||
- | print " | ||
- | print " | ||
- | print " | ||
- | } | ||
- | </ | ||
- | |||
- | この関数では、プラグインのバージョンと利用方法を説明します。これはとても重要で、パラメータ無しや -h, --help といったオプションをつけてプラグインを実行したときに表示すべきです。この例では、-h オプションをつけて実行した場合、次の処理でそれを判断します。 | ||
- | |||
- | < | ||
- | if ($ARGV[0] eq " | ||
- | usage(); | ||
- | exit(0); | ||
- | } | ||
- | </ | ||
- | |||
- | |||
- | プラグインから返される値としては、ファイルシステムから一回データが収集されることがわかると思います。データを含めた XML の書式を生成し標準出力に出力します。この処理は次の部分で行われています。 | ||
- | |||
- | < | ||
- | while (my ($filesystem, | ||
- | |||
- | # Remove the trailing % | ||
- | chop ($use); | ||
- | |||
- | # Print module output | ||
- | print "< | ||
- | print "< | ||
- | print "< | ||
- | print "< | ||
- | print "< | ||
- | print "</ | ||
- | } | ||
- | </ | ||
- | |||
- | このプラグインの出力結果は、次のようになります。 | ||
- | |||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | |||
- | |||
- | このプラグインから返されるモジュール数は、設定したファイルシステムの数に依存し、実行ごとに変更することができます。 | ||
- | |||
- | この XML がソフトウエアエージェントが生成する全体の XML に追加され、Pandora サーバへ送信され、**データサーバ** にて処理されます。 | ||
- | |||
- | ==== トラブルシューティング ==== | ||
- | Pandora FMS がエージェントプラグインを認識できないと、期待した値が取得できなかったりエージェントが動作しません。その場合の確認ポイントを以下に示します。 | ||
- | |||
- | === pandora_agent.conf のドキュメント確認 === | ||
- | ソフトウエアエージェントでは、プラグインの **正しいパス** がこのファイル内に書かれている必要があります。 | ||
- | |||
- | 例: | ||
- | |||
- | | ||
- | |||
- | **MyMonitor.pl** はエージェントプラグインで、**MyMonitor.conf** は引数として渡される設定ファイルです。また、**MyMonitor.err** はプラグインを実行した場合に出力されるエラーを書き込むファイルです。 | ||
- | |||
- | === pandora_agent_daemon の再起動 === | ||
- | Pandora FMS の (Enterprise 版ではなく) OSS 版 を利用している場合は、ソフトウエアエージェントは 5分ごとにプラグインを実行します。次回の実行まで待てない場合は、コマンドラインからソフトウエアエージェントを再起動します。 | ||
- | |||
- | 例: | ||
- | |||
- | / | ||
- | |||
- | === プラグインのパーミッションの確認 === | ||
- | プラグインおよび利用するファイルは、リード、ライト、実行の**権限を正しく設定する**必要があります。Unix であれば、次のようにします。 | ||
- | |||
- | chmod 755 < | ||
- | |||
- | === 出力の確認 === | ||
- | エラーを見つける簡単な方法は、コマンドラインで**プラグインを手動実行**することです。注意して**出力結果を確認**してください。例えば、次のように実行します。 | ||
- | |||
- | < | ||
- | popeye:/ | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | |||
- | === XMLの確認 === | ||
- | |||
- | The XML that prints the plugin **must have valid XML syntax**. | ||
- | The XML also **needs to be well formed**. To check if it is, you could follow this steps from the command line: | ||
- | |||
- | プラグインが出力する XML は、**正しい XML の書式である必要があります**。 | ||
- | XML はまた、**正しく整形されている必要があります**。それを確認するためには、コマンドラインから次の手順を実行します。 | ||
- | |||
- | - Create an XML document with the plugin output: // | ||
- | - Check the XML document: //xmllint Plugin.xml// | ||
- | |||
- | - プラグインの出力を xml ファイルに落とします。: | ||
- | - xml ファイルの書式をチェックします。: | ||
- | |||
- | === デバッグモード === | ||
- | // | ||
- | |||
- | ファイル名は、エージェント名と //.data// を含むもので、/// | ||
- | |||
- | <WRAP center round tip 60%> | ||
- | デバッグモードを有効にすると、エージェントは 1回の実行で終了します。 | ||
- | </ | ||
- | |||
- | === フォーラム === | ||
- | それでもまだうまくいかない場合は、我々の [[http:// | ||
- | |||
- | [[ja: | ||