プラグイン開発において考慮すべき点
概要
Plugins allow Pandora FMS to get information that requires complex processes or that requires the use of complex systems or APIs. A plugin example could be Oracle® database monitoring, which requires a full process for monitoring and also some auto-discovery tasks. Another example could be a simple HTML parse, but that requires some that Goliat (checking web server) cannot do.
プラグインにより Pandora は、複雑な処理を必要とするものや、複雑なシステムや API を利用する必要のある情報収集を実行することができます。プラグインの例をあげると、複雑な処理が必要な Oracle データベースのモニタリングや、何らかの自動検出処理があります。他には、Goliat (ウェブサーバチェック) が実行できないような簡単な HTML のパースができます。
実装とパフォーマンスの違い
Pandora FMS offers two possibilities when executing plugins: execution in the Software agent or in the server.
Pandora のプラグイン実行には、ソフトウエアエージェントでの実行とサーバでの実行の二種類があります。
- Server plugins do independent executions to collect each information piece. The server plugin execution is very difficult so it is only possible for “light” plugins, that is, that does need few or very few queries to get a single piece of information. A server plugin could be an specific HTML parse plugin that requires 2 or 3 queries and so it will charge a little job on the server.
- Software agent plugins allow to obtain several modules at the same time and for that reason they are much more flexible than server plugins. They are perfect for plugins that need several queries to get an information piece; they allow more flexibility to programmers so it is possible to return several modules at the same time.
- サーバプラグインは、収集する情報ごとに個々に実行されます。サーバプラグインの実行は、重くなく、一つの種類の情報を取得するのを簡単な処理にする必要があるため、とても難しいです。特定の HTML をパースするプラグインは、多くの処理を実装せずにサーバに負荷をかけないようにする必要があります。
- エージェントプラグインは、同時に複数のモジュールの情報を取得することができます。このことにより、サーバプラグインよりより柔軟性があります。一つの情報を取得するのに多くの処理が必要なプラグインに適しています。そのため、同時に複数のモジュールの値を返すことができ、開発者にとってより柔軟性があります。
自動検出処理
To do recon tasks on plugins that need it, there are two possibilities:
プラグインで自動検出処理を実行するには、次の二種類の方法があります。
The first one consists on using Pandora server Recon Task server. To that end, it will be necessary to create the ad-hoc code for the specific technology or situation. The Recon Tasks loads Pandora server, so, if for doing the recon task a lot of data requests are necessary, this option should not be considered.
一つは、Pandora サーバの自動検出サーバを利用しての構成です。これを行うには、特定の技術や状況に応じてアドホックなコードを作成する必要があります。自動検出処理は、Pandora サーバに負荷を与えます。そのため、大量のデータ処理が必要な場合は、この選択枝は考えるべきではありません。
It is also possible to create a recon task using an agent plugin. Usually, agent plugins return modules that are attached to the XML that the agent sends to Pandora server. But, consider that when installing the agent in a machine with it, Tentacle is also installed, and this allows to send XML to Pandora server. To do a recon task from an agent plugin, it is possible to use this, and besides adding the modules to the agent as a common plugin does, to give your plugin the capacity to send XML to Pandora with the information of other agents updated as a recon task would do.
エージェントプラグインを用いても自動検出処理を作成することができます。通常、エージェントプラグインは、Pandora サーバに対して送信する XML に記載されたモジュールを返します。しかし、エージェントのインストールと一緒にプラグインをインストールし、tentacle も入っていれば、Pandora サーバに XML を送信することができます。自動検出処理をエージェントプラグインから実行するには、この方法を利用することができます。さらに、通常のプラグインの実行と同じように、モジュールを追加します。自動検出処理が実行するように、エージェントの更新情報を Pandora へ XML で送信するようにプラグインを用意します。
The idea is that the plugin, besides creating average modules, collects the information and creates and sends the XML simulating other installed agents if necessary.
プラグインにより平均的なモジュールの作成および情報収集を行ったり、必要に応じて他のエージェントをシミュレートするXMLを作成して送信するという考え方です。
The reason to create a plugin that sends data through XML and besides does recon task is to distribute the monitoring load among different machines and not centralize it into the server.
XML でデータを送信するプラグインを作成する理由は、自動検出処理の負荷をサーバに集中させずに分散することにあります。
サーバプラグインとエージェントプラグイン
A server plugin should be used when:
サーバプラグインは次のような場面で利用すべきです。
- The load of each execution is small, for example, simple queries.
- If the Recon Task requires low data process.
- If the Recon Task execution intervals are large, for example, once a week
- 実行負荷が小さい場合。例えば単純な処理など。
- 自動検出処理のデータ処理量が少ない場合。
- 自動検出処理の実行間隔が長い場合。例えば、1週間に一度など。
An agent plugin will be used when:
エージェントプラグインは次のような場面で利用すべきです。
- 情報収集において多くの処理がある場合。
- 自動検出処理で高い負荷がかかる場合。
- 自動検出処理の実行間隔が通常のエージェントの実行間隔に近い場合。例えば、5分間隔など。
開発における標準化
In order that all plugins would be the more standard possible, and that they have similar features, you should consider the following aspects:
すべてのプラグインを可能な限り標準化し、同様の機能を持たせるには、次の点を考慮する必要があります。
プラグインと拡張のバージョン管理
In Pandora FMS we follow a system of versions for the plugins that has the following format:
Pandora FMS では、次の形式のプラグインのバージョンシステムに従います。
v1r1
Being:
ここで:
vX
: plugin version, the step of one version to another is made when a new important functionality is added or an error that makes impossible the correct working of the plugin is corrected. The first version is alwaysv1
.rY
: revision of the plugin, the transition from one revision to another occurs when a bug is fixed or a minor functionality is implemented. The first revision is alwaysr1
.
vX
: プラグインのバージョンです。新しい重要な機能が追加されたり、プラグインが正常動作しないような不具合が修正されたりしたときに、あるバージョンから別のバージョンへあげられます。最初のバージョンはv1
です。rY
: プラグインのリビジョンです。バグが修正されたとき、またはマイナーな機能が実装されたときに、あるリビジョンから別のリビジョンへの移行が発生します。最初のリビジョンは常にr1
です。
The change to one revision to another is done when any bug is fixed or a minor feature is implemented. The first revision is the r1. el paso de una revisión a otra se produce cuando se arregla algún bug o se implementa una feature menor. La primera revisión es la r1.
あるリビジョンから別のリビジョンへの変更は、バグが修正されたとき、またはマイナーな機能が実装されたときに行われます。 最初のリビジョンは r1 です。
Always that there would be a change to a new version, should be started by the first revision, that is, if we have a plugin in the version v1r5 and we want to get a higher number of version, then we will have v2r1.
常に最初のリビジョンから開始し、新しいバージョンへ変更していく必要があります。つまり、バージョン v1r5 のプラグインに対して、より新しいバージョンを定義したい場合は、v2r1 などになります。
使い方とプラグインのバージョン
All plugins should respond to a call without parameters, or also with an option type -h or –help, showing the command for its execution and the different parameters of it.Besides, it will be necessary to show the version of the plugin. For example:
すべてのプラグインは、パラメータなし、またはオプション -h または –help を使用した呼び出しに応答し、実行用のコマンドとそのさまざまなパラメータを表示する必要があります。さらに、プラグインのバージョンを表示する必要があります。 例えば:
$ ./myplugin myplugin version: v1r1 Usage myplugin <param1> <param2> <param3>