目次

Pandora FMS 開発リファレンス

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

Pandora FMS コードのアーキテクチャ

For a separate and detailed explanation about Pandora FMS database structure see the article Pandora FMS engineering.

Pandora FMS データベースの構造に関する詳細については、 Pandora FMS の技術情報 を参照してください。

互換リンクの作成方法

For all links, it is necessary to use the function ui_get_full_url. Before calling the function, it is necessary to include functions_ui.php.

すべてのリンクでは、関数 ui_get_full_url を使用する必要があります。関数を呼び出す前に、functions_ui.php をインクルードする必要があります。

$url_refresh = ui_get_full_url();
$url = ui_get_full_url("/relative/path/file_script.php");
<?php
  ...
  $url = ui_get_full_url("/relative/path/file_script.php");
  ...
?>
 
<script type="text/javascript">
  ...
  jQuery.post ('<?php $url; ?>',
    {
     ...
    });
 ...
</script>
echo '<form method="post" action="index.php?param=111?param=222?param=333?param=444?param=555?param=666">';

Pandora コンソールの実行開始ポイント

PFMS Web console only has a few web application execution entry points, unlike other web applications, for example:

PFMS Web コンソールには少しの実行エントリ ポイントしかありません。例えば、次のような他の Web アプリケーションとは異なります。

インストール

This entry point is to perform an installation of PFMS Web console and the database. Once the installation is finished PFMS Web console requests the deletion of the file for security.

この実行開始ポイントは、Pandora コンソールおよびデータベースのインストール処理のためのものです。インストールが終了したら、Pandora コンソールはセキュリティのためにこのファイルを削除するように求めます。

install.php

通常実行

All user interaction on the console is done through this entry point.

ブラウザからユーザが利用するコンソールでは、すべての操作がこの実行開始ポイントです。

index.php

AJAX リクエスト

In all AJAX requests the user permissions are checked: To make them consistent and easy to maintain they are done through this file by passing by GET or POST method the parameter page the relative address of the script to execute.

セキュリティの必要性(ユーザの権限チェック)および、構造およびメンテナンスを簡単にするために、すべての AJAX リクエストはこのファイルにアクセスします。実行処理では、このファイルに GETPOST で実際に実行するスクリプトの相対ディレクトリを page パラメータで渡します。

ajax.php

モバイルコンソール

For mobile terminals that have a significantly smaller screen than a computer monitor, Pandora FMS has a reduced version of the console for these devices, reduced both in visual aspect and simplified in its functionality.

コンピュータのモニタよりもはるかに小さい画面のモバイル端末の場合、Pandora FMS はこれらのデバイス用にコンソールの縮小バージョンを提供し、視覚的にも機能的にも簡素化されています。

mobile/index.php

API

Pandora FMS has an API with which third party applications can interact through a simple channel through port 80 and with the HTTP/HTTPS protocol.

Pandora FMS には API があり、サードパーティのアプリケーションはポート 80 経由のシンプルなチャネルと HTTP/HTTPS プロトコルを使用して対話できます。

The strengthening of this script is by means of two parameters, validating both:

このスクリプトの強化は、次の 2 つのパラメータによって行われ、両方が検証されます。

include/api.php

特別ケース

Within PFMS Web console there are several special cases for entry points, usually to avoid login or general processing being done at the main entry point (index.php of the root).

PFMS Web コンソール内には、エントリポイントに関する特別なケースがいくつかあります。これは通常、メインエントリポイント (ルートの index.php) でログインや一般的な処理が実行されないようにするためです。

Cron タスクの実行

This extension by means of a wget command in the cron can execute the cron tasks assigned to it without asking for login interactively. Of course the set of tasks is bounded and known preventing the execution of malicious code without login.

これは、cron から wget コマンドを呼び出すことにより実行されます。また、ログインすることなくタスクを実行することができます。もちろん、マルウェアでの実行を避けるために、タスクのグループで制限されています。

enterprise/extensions/cron/cron.php
ビジュアルコンソールの外部表示

This generates a page with a full screen visual console view without requiring a login, although for authentication a hash generated for each view published in this way is required.

このスクリプトは、ビジュアルコンソールをログインせずに(メニューなしで)全画面表示するものです。ただしハッシュ認証が必要です。ハッシュはそれぞれのビジュアルコンソールで生成します。

operation/visual_console/public_console.php
ネットワークマップコンソールのポップアップ

A popup form that shows the detail view of an agent that has an item in the Networkmap Console. To authenticate it uses the session of the authenticated user in the PFMS Web console.

ネットワークマップのアイテムからエージェント詳細をポップアップウインドウで表示します。これは Pandora コンソールにログインしているユーザのセッション情報を認証に使います。

enterprise/operation/agentes/networkmap_enterprise.popup.php
モジュールグラフのポップアップ

A pop-up form that displays a detailed graph of a module and also allows configuring various display parameters. For authentication it uses the data of the user logged into the PFMS Web console.

モジュールグラフをポップアップウインドウ表示するものです。そのウインドウの中で表示するグラフを変更するパラメータ設定もできます。これは、Pandora コンソールにログインしているユーザのセッション情報を認証に使います。

operation/agentes/stat_win.php
静的グラフ

The static graphs are image files that are generated by PHP scripts, the data to be shown, if they are extensive, are saved serialized in a special file that the script processes, this file has a life time to avoid malicious accesses and DoS attacks. For the execution of this script it is not necessary to be authenticated in Pandora FMS.

データを表示する画像ファイルを生成する PHP スクリプトです。大量のデータがある場合、データはスクリプトにより特定のファイルの保存されます。ファイルは、不正アクセスや DOS アタックを防ぐために、有効期限があります。このスクリプトの実行には、Pandora FMS の認証は不要です。

include/graphs/fgraph.php
レポート

CSV レポート

The script generates a text file containing the CSV data, for authentication it uses the data of the logged in user.

CSV フォーマットでデータが書かれたテキストファイルを生成するスクリプトです。このスクリプトはログインユーザの認証を利用します。

enterprise/operation/reporting/reporting_viewer_csv.php

PDF レポート

The script generates a text file containing the PDF data, for authentication it uses the data of the logged in user.

このスクリプトは PDF ファイルを生成します。このスクリプトはログインユーザの認証を利用します。

enterprise/operation/reporting/reporting_viewer_pdf.php
イベント

サウンドイベントポップアップ

Popup window that is periodically checking if there is any event to show it in an audible and visual way. The authentication is by means of the user's data that has logged into PFMS Web console.

このポップアップウインドウは、サウンドイベントを表示するために新たなイベント定期的に確認します。このスクリプトはログインユーザの認証を使います。

operation/events/sound_events.php

CSV イベント

The script generates a text file containing the CSV data, for authentication it uses the data of the logged in user.

このスクリプトは CSV フォーマットでデータが書かれたテキストファイルを生成します。このスクリプトはログインユーザの認証を使います。

operation/events/export_csv.php

RSS イベント

The script generates a text file containing the CSV data, for authentication it uses the data of the logged in user with a hash as a parameter.

このスクリプトは RSS フォーマットでイベントをテキストファイルに書き出します。このスクリプトはハッシュ認証を使います。

operation/events/events_rss.php

エージェント、モジュール、グループステータスの基本機能

状態を表す基準と DB での記録

状態は次の通りです。

DB 内部の状態を表すレコードは次の通りです。

エージェント

状態関数

These functions return the number of modules and alerts triggered from an agent by applying an optional filter.

これらの関数は、エージェントの状態またはアラートの発生状況でフィルタリングしたモニター数を取得するものです。

All functions have the filter option which was added to make the function more flexible. The filter content is added to the end of the SQL query in all functions. With the filter you can add specific SQL clauses to create filters using the tables: status_tag, tag and module_tag.

すべての関数には、関数をより柔軟にするために追加された filter オプションがあります。フィルター コンテンツは、すべての関数の SQL クエリの末尾に追加されます。フィルターを使用すると、status_tagtag、および module_tag の各テーブルを使用してフィルターを作成するための特定の SQL 句を追加できます。


agents_monitor_critical($id_agent, $filter='')

Returns the number of modules in critical state for the agent.

エージェントの障害状態にあるモジュール数を返します。


agents_monitor_warning ($id_agent, $filter ='')

Returns the number of modules in warning status for the agent.

エージェントの警告状態にあるモジュール数を返します。


agents_monitor_unknown ($id_agent, $filter ='')

Returns the number of modules in unknown status for the agent.

エージェントの不明状態のモジュール数を返します。


agents_monitor_ok ($id_agent, $filter ='')

Returns the number of modules in normal state for the agent.

エージェントの正常状態にあるモジュール数を返します。


agents_get_alerts_fired ($id_agent, $filter ='')

Returns the number of alerts triggered for the agent.

エージェントの発報されたアラートの数を返します。

補助関数

These functions perform agent-related tasks for some views:

これらの関数は、いくつかの場面でエージェントに関連した処理を実行します。


agents_tree_view_alert_img ($alert_fired)

Returns the path to the alert image used in the Tree View.

ツリー表示で使用されるアラート画像へのパスを返します。


agetns_tree_view_status_img ($critical, $warning, $unknown)

Returns the path of the image for the agent status used in the Tree View.

ツリー表示で使用されるエージェントステータス画像のパスを返します。


グループ

これらの関数は、Pandora に定義されたエージェントグループにもとづいて、エージェントおよびモジュールの状態を返します。

サーバとコンソールの関数は、出力結果が同じになるように同じ sql クエリを利用しなければいけないことに注意してください。

サーバ関数

pandora_group_statistics

This function calculates group statistics if the Use realtime statistics parameter is disabled.

この関数は、リアルタイム統計を使用する(Use realtime statistics) パラメータが無効になっている場合にグループ統計を計算します。

コンソール関数

グループ

The console functions calculate statistics based on a matrix of agent groups.

コンソール関数は、エージェントグループのマトリックスに基づいて統計を計算します。

These functions do not use the disabled agents or modules:

これらの機能は、無効なエージェントまたはモジュールを使用しません:


groups_agent_unknown ($group_array)

Returns the number of agents in unknown state for the given groups.

指定されたグループの不明状態にあるエージェント数を返します。


groups_agent_ok ($group_array)

Returns the number of agents in normal state for the given groups.

指定されたグループの正常状態のエージェント数を返します。


groups_agent_critical ($group_array)

Returns the number of agents in critical state for the given groups.

指定されたグループの障害状態にあるエージェント数を返します。


groups_agent_warning ($group_array)

Returns the number of agents in warning status for the given groups.

指定されたグループの警告状態にあるエージェント数を返します。


モジュール

These functions calculate statistics for modules. They do not use the disabled modules or agents:

これらの関数はモジュールの統計を計算します。無効なモジュールやエージェントは使用しません:


groups_monitor_not_init ($group_array)

Returns the number of modules with uninitialized status for the given groups.

指定されたグループの未初期化状態のモジュール数を返します。


groups_monitor_ok ($group_array)

Returns the number of modules with normal status for the given groups.

指定されたグループの正常状態のモジュール数を返します。


groups_monitor_critical ($group_array)

Returns the number of modules with critical status for the given groups.

指定されたグループの障害状態のモジュール数を返します。


groups_monitor_warning ($group_array)

Returns the number of modules with warning status for the given groups.

指定されたグループの警告状態のモジュール数を返します。


groups_monitor_unknown ($group_array)

Devuelve el número de módulos con estado desconocido para los grupos dados.

指定されたグループの不明状態のモジュール数を返します。


groups_monitor_alerts ($group_array)

Returns the number of modules with alerts for the given groups.

指定されたグループのアラートが設定されたモジュール数を返します。


groups_monitor_fired_alerts ($group_array)

Returns the number of modules with triggered alerts for the given groups.

指定されたグループの発報されたアラートがあるモジュール数を返します。

モジュール

These functions return statistics based on the module name. They do not take into account disabled agents and modules.

これらの関数は、モジュール名に基づいて統計を返します。無効なエージェントとモジュールは考慮されません。

modules_agents_unknown ($module_name)

Returns the number of agents in unknown status that have a module with the given name.

指定された名前のモジュールを持つ不明状態のエージェント数を返します。


modules_agents_ok ($module_name)

Returns the number of agents in normal state that have a module with the given name.

指定された名前のモジュールを持つ、正常状態のエージェント数を返します。


modules_agents_critical ($module_name)

Returns the number of agents in critical status that have a module with the given name.

指定された名前のモジュールを持つ、障害状態のエージェント数を返します。


modules_agents_warning ($module_name)

Returns the number of agents in warning status that have a module with the given name.

指定された名前のモジュールを持つ警告状態のエージェント数を返します。


These functions return statistics using the module group as a filter. It does not take into account disabled agents or modules:

これらの関数は、モジュール グループをフィルターとして使用して統計情報を返します。無効なエージェントやモジュールは考慮されません。


modules_group_agent_unknown ($module_group)

Returns the number of agents with unknown status that have modules belonging to the given module group.

指定されたモジュールグループに属するモジュールを持つ、不明状態のエージェント数を返します。


modules_group_agent_ok ($module_group)

Returns the number of agents with normal status that have modules belonging to the given module group.

指定されたモジュールグループに属するモジュールを持つ、正常状態のエージェント数を返します。


modules_group_agent_critical ($module_group)

Returns the number of agents with critical status that have modules belonging to the given module group.

指定されたモジュールグループに属するモジュールを持つ、障害状態のエージェント数を返します。


modules_group_agent_warning ($module_group)

Returns the number of agents with warning status that have modules belonging to the given module group.

指定されたモジュールグループに属するモジュールを持つ、警告状態のエージェント数を返します。

ポリシー

These functions return the number of agents for each given state and policy. They do not use the disabled agents and modules to calculate the result.

これらの関数は、指定された状態とポリシーごとにエージェントの数を返します。無効なエージェントとモジュールは結果の計算に使用されません。

policies_agents_critical ($id_policy)

Returns the number of agents with critical status that belong to a given policy.

指定されたポリシーに属する、障害状態のエージェント数を返します。


policies_agents_ok ($id_policy)

Returns the number of agents with normal status that belong to a given policy.

指定されたポリシーに属する、正常状態のエージェント数を返します。


policies_agents_unknown ($id_policy)

Returns the number of agents with unknown status that belong to a given policy.

指定されたポリシーに属する不明状態のエージェント数を返します。


policies_agents_warning ($id_policy)

Returns the number of agents with warning status that belong to a given policy.

指定されたポリシーに属する警告状態のエージェント数を返します。

OS

These functions calculate the statistics for the agents based on the Operating Systems they belong to. They do not use disabled agents or modules.

これらの関数は、エージェントが属するオペレーティング システムに基づいてエージェントの統計を計算します。無効なエージェントやモジュールは使用しません。

os_agents_critical ($id_os)

Returns the number of agents in critical state that belong to the given Operating System.

指定されたオペレーティングシステムに属する、障害状態のエージェント数を返します。


os_agents_ok($id_os)

Returns the number of agents in normal state that belong to the given Operating System.

指定されたオペレーティングシステムに属する、正常状態のエージェント数を返します。


os_agents_warning ($id_os)

Returns the number of agents in warning status that belong to the given Operating System.

指定されたオペレーティングシステムに属する警告状態のエージェント数を返します。


os_agents_unknown ($id_os)

Returns the number of agents in unknown state that belong to the given Operating System.

指定されたオペレーティングシステムに属する不明状態のエージェント数を返します。

開発

Most of the extensions have been described as independent annexes, specialized for server plugin creation, Unix agent plugins, and Web Console extensions. This chapter describes how to collaborate in Pandora FMS and how to compile the Windows agent from the sources.

ほとんどの拡張は、サーバプラグイン、Unix エージェントプラグイン、コンソール拡張といったそれぞれの章で説明しています。この章では、Pandora FMS との連携および、Windows エージェントのソースからのコンパイル方法について説明します。

Pandora FMS プロジェクトへの協力

This project is maintained by volunteer developers with their contributions. New developers, documentation writers, or people who want to help are always welcome. A good way to get started is by subscribing to our mailing lists and/or forum.

このプロジェクトはボランティア開発者の貢献によって維持されています。新しい開発者、ドキュメント作成者、または協力したい人はいつでも歓迎します。始めるには、メーリングリストや フォーラム を購読するのが良い方法です。

バグ

Inform about possible errors helps us improve Pandora FMS. Please, before forwarding a bug report check our bug database.

考えられるエラーを報告することは、Pandora FMS の改善に役立ちます。バグレポートを送信する前に、バグデータベースを確認してください

メーリングリスト

Mailing lists are a great way to keep up to date by email. We have a public mailing list for users and announcements (with low traffic) and a development mailing list for technical discussions and (sometimes daily) development notifications via our GIT (Code Version Control System) automatic notification system.

メーリング リストは、電子メールで最新情報を入手するのに最適な方法です。ユーザーとお知らせ用の公開メーリング リスト (トラフィックは少ない) と、技術的な議論や (場合によっては毎日の) GIT (コード バージョン コントロール システム) 自動通知システム経由の開発通知用の開発メーリング リストがあります。

Windows エージェントのソースからのコンパイル

最新ソースの入手

To get the latest version of the code it is essential to download the sources from the code repository GitHub, where the official Pandora FMS repository is published.

最新バージョンのコードを入手するには、公式の Pandora FMS リポジトリが公開されているコードリポジトリ GitHub からソースをダウンロードすることが不可欠です。

Pandora FMS API

There is a Pandora FMS external API to be able to link third party applications with Pandora FMS, both to obtain information from Pandora FMS and to introduce information inside Pandora FMS. All this documentation is in the appendix of Pandora FMS External API.

Pandora FMS 外部 API を使用すると、サードパーティのアプリケーションを Pandora FMS にリンクして、Pandora FMS から情報を取得したり、Pandora FMS 内に情報を取り込んだりすることができます。このドキュメントはすべて Pandora FMS 外部 API にあります。

XML データファイルフォーマット

Knowing the Pandora FMS data XML format can help to improve agent plugins, create customized agents or simply send customized XML files to the Pandora FMS data server.

Pandora FMS の XML データファイルのフォーマットを理解することで、エージェントプラグインの拡張や、独自エージェントの作成、Pandora FMS データサーバへの独自 XML ファイルの送信などができるようになります。

Like any XML document, the data file must begin with an XML declaration:

すべての XML ドキュメントど同じように、データファイルは次のような XML の宣言で始まります。

<?xml version='1.0' encoding='UTF-8'?>

Next comes the agent_data element that defines the agent that sends the data. It supports the following attributes:

次に、エージェントが送るデータを定義する agent_data 要素が来ます。次に示す属性に対応しています。

XML ヘッダの例を見てみましょう。

 <agent_data description= group= os_name='linux' os_version='Ubuntu 10.10' interval='30' version='3.2(Build 101227)' timestamp='2011/04/20 12:24:03' agent_name='foo' timezone_offset='0' parent_agent_name='too' address='192.168.1.51' custom_id='BS4884' url_address='http://mylocalhost:8080'>

A module element is then required for each module, and the following elements can be nested to define the module:

そして、モジュールごとに、module という要素が必要です。モジュールの定義のために、次の要素を入れることができます。

These tokens will only work for dataserver plugins.

これらのトークンは、データサーバプラグイン のみで動作します。

Any other element will be saved as extended information of the module in the Pandora FMS database. A module must have at least one element name, type and data, for example:

その他の要素は、モジュールの拡張情報として Pandora FMS データベースに保存されます。モジュールには、少なくとも 1 つの要素 nametypedata が必要です。例:

その他の要素は、モジュールの拡張情報として Pandora FMS のデータベースに保存されます。

  <module>
    <name>CPU</name>
    <description>CPU usage percentage</description>
    <type>generic_data</type>
    <data>21</data>
  </module>

There can be any number of elements in an XML data file before closing the agent_data tag.

XML データファイルは任意の数のモジュール要素を持つことができます。最後に、agent_data タグをクローズするのを忘れないでください。

There is a special case of multi-item XML, based on a list of data. This applies only to string data. The XML would look something like this:

アイテムリストによる、複数の XML データを含む特別なケースがあります。これは、文字列タイプの場合にのみ有効です。XML は次のようになります。

<module>
 <type>async_string</type>
 <datalist>
   <data><value><![CDATA[xxxxx]]></value></data>
   <data><value><![CDATA[yyyyy]]></value></data>
   <data><value><![CDATA[zzzzz]]></value></data>
 </datalist>
</module>

A time stamp can be specified for each value:

タイムスタンプは、それぞれの値ごとに定義できます。

<module>
 <type>async_string</type>
 <datalist>
   <data>
     <value><![CDATA[xxxxx]]></value>
     <timestamp>1970-01-01 00:00:00</timestamp>
   </data>
   <data>
     <value><![CDATA[yyyyy]]></value>
     <timestamp>1970-01-01 00:00:01</timestamp>
   </data>
   <data>
     <value><![CDATA[zzzzz]]></value>
     <timestamp>1970-01-01 00:00:02</timestamp>
   </data>
 </datalist>
 </module>

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

(OBSOLETE)

Windows

ソースからビルドするには、MinGW tools を含む最新の Dev-Cpp IDE 版が必要です。こちらからダウンロードできます。

PandoraAgent.dev を Dev-Cpp で開き、プロジェクトを作成します。デフォルトのインストールですべてコンパイル可能です。

ソースからのビルドで問題を見つけた場合は、メール (ramon.novoa@artica.es) もしくは SourceForge 上のプロジェクトページ にてお知らせください。

Linux でのクロスコンパイル

Linux で Pandora FMS Windows エージェントをクロスコンパイルするには、次のようにします。

Linux への MinGW のインストール

Ubuntu/Debian の場合:

sudo aptitude install mingw32

SUSE または RPM 管理の環境の場合 (手動での Zypper の利用) は、以下の RUL より:

http://download.opensuse.org/repositories/CrossToolchain:/mingw/openSUSE_11.1/

エージェントに必要な追加ライブラリのインストール

例えば、Openssl パッケージをインストールするには次のようにします。

http://sourceforge.net/projects/devpaks/files/ へ行き、ファイルをダウンロードします。

openssl-0.9.8e-1cm.DevPak

openssl-0.9.8e-1cm.DevPak を展開します。

tar jxvf openssl-0.9.8e-1cm.DevPak

ライブラリおよびインクルードファイルを MinGW のあるクロスコンパイル環境にコピーします。

 cp lib/*.a /usr/i586-mingw32msvc/lib/
 cp -r include/* /usr/i586-mingw32msvc/include/

依存関係やライブラリの問題は、ご自身で解決する必要があります。 これらを簡単にできるように、Pandora FMS の公式ダウンロードサイトに必要なライブラリとインクルードファイルを tar で固めたファイルを mingw_pandorawin32_libraries_9Oct2009.tar.gz という名前で置いてあります。

コンパイルおよびリンク

コンパイラおよび、インクルードファイル、ライブラリのインストール後、Pandora FMS エージェントのソースディレクトリへ行き、以下を実行します。

./configure --host=i586-mingw32msvc && make

これで、実行可能な .exe ファイルが生成されます。