差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
ja:documentation:08_technical_reference:01_development_and_extension [2021/11/12 22:58] – [Pandora FMS XML データファイルフォーマット] junichi | ja:documentation:08_technical_reference:01_development_and_extension [不明な日付] (現在) – 削除 - 外部編集 (不明な日付) 127.0.0.1 | ||
---|---|---|---|
行 1: | 行 1: | ||
- | ====== Pandora FMS 開発リファレンス ====== | ||
- | {{indexmenu_n> | ||
- | [[ja: | ||
- | |||
- | ===== Pandora FMS の開発 ===== | ||
- | |||
- | ==== Pandora FMS コードのアーキテクチャ ==== | ||
- | |||
- | Pandora FMS データベースの構造に関する詳細については、 [[: | ||
- | |||
- | |||
- | === 互換リンクの作成方法 === | ||
- | すべてのリンクでは、ui_get_full_url 関数を利用する必要があります。 | ||
- | |||
- | * ui_get_full_url の利用方法\\ 以前は、" | ||
- | |||
- | * リフレッシュ用の url が必要です。\\ 例 | ||
- | |||
- | $url_refresh = ui_get_full_url(); | ||
- | |||
- | * url に相対パスが必要です\\ 例 | ||
- | |||
- | 旧手法 | ||
- | |||
- | $url = $config[' | ||
- | |||
- | 新手法 | ||
- | |||
- | $url = ui_get_full_url("/ | ||
- | |||
- | * javascript であっても同様に簡単です。\\ 例 | ||
- | |||
- | 旧手法 | ||
- | |||
- | < | ||
- | <?php | ||
- | ... | ||
- | $url = $config[' | ||
- | ... | ||
- | ?> | ||
- | <script type=" | ||
- | ... | ||
- | jQuery.post ('<? | ||
- | { | ||
- | ... | ||
- | }); | ||
- | ... | ||
- | </ | ||
- | </ | ||
- | |||
- | 新手法 | ||
- | |||
- | < | ||
- | <?php | ||
- | ... | ||
- | $url = ui_get_full_url("/ | ||
- | ... | ||
- | ?> | ||
- | <script type=" | ||
- | ... | ||
- | jQuery.post ('<? | ||
- | { | ||
- | ... | ||
- | }); | ||
- | ... | ||
- | </ | ||
- | </ | ||
- | |||
- | * 特別なケース: | ||
- | * この関数を利用するために、index.php への直接リンクは必要ありません。\\ 例 | ||
- | |||
- | echo '< | ||
- | |||
- | === Pandora コンソールの実行開始ポイント === | ||
- | Pandora コンソールのウェブアプリケーション実行開始ポイントは非常に少ないです。 | ||
- | |||
- | 例えば Wordpress などの他のウェブアプリケーションは、フロントエンドやバックエンドで一つの開始ポイントになっています。また、PyMEs などは通常それぞれの php ファイルが実行開始ポイントになっています。 | ||
- | |||
- | == インストール == | ||
- | この実行開始ポイントは、Pandora コンソールおよびデータベースのインストール処理のためのものです。インストールが終了したら、Pandora コンソールはセキュリティのためにこのファイルを削除するように求めます。 | ||
- | |||
- | install.php | ||
- | |||
- | == 通常実行 == | ||
- | ブラウザからユーザが利用するコンソールでは、すべての操作がこの実行開始ポイントです。 | ||
- | |||
- | index.php | ||
- | |||
- | == AJAX リクエスト == | ||
- | セキュリティの必要性(ユーザの権限チェック)および、構造およびメンテナンスを簡単にするために、すべての AJAX リクエストはこのファイルにアクセスします。実行処理では、このファイルに GET や POST で実際に実行するスクリプトの相対ディレクトリを " | ||
- | |||
- | ajax.php | ||
- | |||
- | == 携帯コンソール == | ||
- | 携帯端末はコンピュータの画面より小さい画面です。Pandora FMS では、これらの端末のために、Pandora コンソールの単純化バージョンを備えています。操作しやすい画面にするために、デザインと機能を単純化しています。 | ||
- | |||
- | mobile/ | ||
- | |||
- | == API == | ||
- | Pandora FMS 3.1 から、80番ポートの HTTP プロトコルを使って Pandora FMS を他のアプリケーションから操作できる ASI を備えています。 | ||
- | |||
- | このスクリプトのセキュリティは次の 3つから成ります。 | ||
- | |||
- | * クライアント IP は、指定したリストに書かれているか、リストの正規表現にマッチしなければいけません。IPリストは、Pandora FMS の設定画面から設定します。 | ||
- | * API パスワードパラメータを渡さないといけません。このパスワードはまた、Pandora FMS 設定画面で設定します。 | ||
- | * パラーメタとして、パスワードとユーザを指定しなければいけません。このユーザは、API で操作を実行する権限を持っていなければなりません。 | ||
- | |||
- | include/ | ||
- | |||
- | == 特別ケース == | ||
- | Pandora コンソールでは、実行開始ポイントについていくつかの特別ケースがあります。それは、メインの開始ポイント(index.php)からのログインを回避するような場合です。 | ||
- | |||
- | **Cron タスクの実行** | ||
- | |||
- | これは、cron から wget コマンドを呼び出すことにより実行されます。また、ログインすることなくタスクを実行することができます。もちろん、マルウェアでの実行を避けるために、タスクのグループで制限されています。 | ||
- | |||
- | enterprise/ | ||
- | |||
- | **ビジュアルコンソールの外部表示** | ||
- | |||
- | このスクリプトは、ビジュアルコンソールをログインせずに(メニューなしで)全画面表示するものです。ただしハッシュ認証が必要です。ハッシュはそれぞれのビジュアルコンソールで生成します。 | ||
- | |||
- | operation/ | ||
- | |||
- | **ネットワークマップコンソールのポップアップ** | ||
- | |||
- | ネットワークマップのアイテムからエージェント詳細をポップアップウインドウで表示します。これは Pandora コンソールにログインしているユーザのセッション情報を認証に使います。 | ||
- | |||
- | enterprise/ | ||
- | |||
- | **モジュールグラフのポップアップ** | ||
- | |||
- | モジュールグラフをポップアップウインドウ表示するものです。そのウインドウの中で表示するグラフを変更するパラメータ設定もできます。これは、Pandora コンソールにログインしているユーザのセッション情報を認証に使います。 | ||
- | |||
- | operation/ | ||
- | |||
- | **静的グラフ** | ||
- | |||
- | データを表示する画像ファイルを生成する PHP スクリプトです。大量のデータがある場合、データはスクリプトにより特定のファイルの保存されます。ファイルは、不正アクセスや DOS アタックを防ぐために、有効期限があります。このスクリプトの実行には、Pandora の認証は不要です。 | ||
- | |||
- | include/ | ||
- | |||
- | **レポート** | ||
- | |||
- | **CSV レポート** | ||
- | |||
- | CSV フォーマットでデータが書かれたテキストファイルを生成するスクリプトです。このスクリプトはログインユーザの認証を利用します。 | ||
- | |||
- | enterprise/ | ||
- | |||
- | **PDF レポート** | ||
- | |||
- | このスクリプトは PDF ファイルを生成します。このスクリプトはログインユーザの認証を利用します。 | ||
- | |||
- | enterprise/ | ||
- | |||
- | **イベント** | ||
- | |||
- | **サウンドイベントポップアップ** | ||
- | |||
- | このポップアップウインドウは、サウンドイベントを表示するために新たなイベント定期的に確認します。このスクリプトはログインユーザの認証を使います。 | ||
- | |||
- | operation/ | ||
- | |||
- | **CSV イベント** | ||
- | |||
- | このスクリプトは CSV フォーマットでデータが書かれたテキストファイルを生成します。このスクリプトはログインユーザの認証を使います。 | ||
- | |||
- | operation/ | ||
- | |||
- | **スクリーンセーバ** | ||
- | |||
- | このウインドウは、Pandora の新たなイベントをスクリーンセーバ形式で表示します。認証には API パスワードを利用します。 | ||
- | |||
- | operation/ | ||
- | |||
- | **RSS イベント** | ||
- | |||
- | このスクリプトは RSS フォーマットでイベントをテキストファイルに書き出します。このスクリプトはハッシュ認証を使います。 | ||
- | |||
- | operation/ | ||
- | |||
- | ==== エージェント、モジュール、グループステータスの基本機能 ==== | ||
- | === 状態を表す基準と DB での記録 === | ||
- | 状態は次の通りです。 | ||
- | |||
- | * 障害(赤): | ||
- | * 警告(黄色): | ||
- | * 不明(グレー): | ||
- | * 正常(緑): | ||
- | |||
- | DB 内部の状態を表すレコードは次の通りです。 | ||
- | |||
- | * 障害: 1 | ||
- | * 警告: 2 | ||
- | * 不明: 3 | ||
- | * 正常: 0 | ||
- | |||
- | === エージェント === | ||
- | == 状態関数 == | ||
- | これらの関数は、エージェントの状態またはアラートの発生状況でフィルタリングしたモニター数を取得するものです。 | ||
- | |||
- | すべての関数には、より柔軟に利用できるように **filter** パラメータが追加されています。すべての関数におけるフィルタの内容は、sql クエリの最後に追加されます。このフィルタで、**tagente_estado**, | ||
- | |||
- | * **agents_monitor_critical ($id_agent, $filter ="" | ||
- | |||
- | * **agents_monitor_warning ($id_agent, $filter ="" | ||
- | |||
- | * **agents_monitor_unknown ($id_agent, $filter ="" | ||
- | |||
- | * **agents_monitor_ok ($id_agent, $filter ="" | ||
- | |||
- | * **agents_get_alerts_fired ($id_agent, $filter ="" | ||
- | |||
- | == 補助関数 == | ||
- | これらの関数は、いくつかの場面でエージェントに関連した処理を実行します。 | ||
- | |||
- | * **agents_tree_view_alert_img ($alert_fired)**: | ||
- | |||
- | * **agetns_tree_view_status_img ($critical, $warning, $unknown)**: | ||
- | |||
- | === グループ === | ||
- | これらの関数は、Pandora に定義されたエージェントグループにもとづいて、エージェントおよびモジュールの状態を返します。 | ||
- | |||
- | <WRAP center round important 60%> | ||
- | サーバとコンソールの関数は、出力結果が同じになるように同じ sql クエリを利用しなければいけないことに注意してください。 | ||
- | </ | ||
- | |||
- | == サーバ関数 == | ||
- | * **pandora_group_statistics**: | ||
- | |||
- | == コンソール関数 == | ||
- | コンソール関数は、エージェントグループの構造に基づいて状態を計算します。これらの関数は、無効化されたエージェントやモジュールは返しません。 | ||
- | |||
- | * **groups_agent_unknown ($group_array)**: | ||
- | |||
- | * **groups_agent_ok ($group_array)**: | ||
- | |||
- | * **groups_agent_critical ($group_array)**: | ||
- | |||
- | * **groups_agent_warning ($group_array)**: | ||
- | |||
- | これらの関数はモジュールの状態を計算します。無効化されたモジュールやエージェントには使えません。 | ||
- | |||
- | * **groups_monitor_not_init ($group_array)**: | ||
- | |||
- | * **groups_monitor_ok ($group_array)**: | ||
- | |||
- | * **groups_monitor_critical ($group_array)**: | ||
- | |||
- | * **groups_monitor_warning ($group_array)**: | ||
- | |||
- | * **groups_monitor_unknown ($group_array)**: | ||
- | |||
- | * **groups_monitor_alerts ($group_array)**: | ||
- | |||
- | * **groups_monitor_fired_alerts ($group_array)**: | ||
- | |||
- | === モジュール === | ||
- | これらの関数は、モジュール名をもとにした情報を返します。無効化したエージェントやモジュールには使えません。 | ||
- | |||
- | * **modules_agents_unknown ($module_name)**: | ||
- | |||
- | * **modules_agents_ok ($module_name)**: | ||
- | |||
- | * **modules_agents_critical ($module_name)**: | ||
- | |||
- | * **modules_agents_warning ($module_name)**: | ||
- | |||
- | これらの関すは、モジュールグループみ基づいた状態を返します。無効化したエージェントやモジュールには使えません。 | ||
- | |||
- | * **modules_group_agent_unknown ($module_group)**: | ||
- | |||
- | * **modules_group_agent_ok ($module_group)**: | ||
- | |||
- | * **modules_group_agent_critical ($module_group)**: | ||
- | |||
- | * **modules_group_agent_warning ($module_group)**: | ||
- | |||
- | === ポリシー === | ||
- | これらの関数は、指定したポリシーのそれぞれの状態にあるエージェント数を返します。無効化したエージェントやモジュールには使えません。 | ||
- | |||
- | * **policies_agents_critical ($id_policy)**: | ||
- | |||
- | * **policies_agents_ok ($id_policy)**: | ||
- | |||
- | * **policies_agents_unknown ($id_policy)**: | ||
- | |||
- | * **policies_agents_warning ($id_policy)**: | ||
- | |||
- | === OS === | ||
- | これらの関数は、OS に基づいたエージェントの状態を返します。無効化したエージェントやモジュールには使えません。 | ||
- | |||
- | * **os_agents_critical ($id_os)**: 指定した OS で障害状態のエージェント数を返します。 | ||
- | |||
- | * **os_agents_ok($id_os)**: | ||
- | |||
- | * **os_agents_warning ($id_os)**: 指定した OS で障害状態のエージェント数を返します。 | ||
- | |||
- | * **os_agents_unknown ($id_os)**: 指定した OS で不明状態のエージェント数を返します。 | ||
- | |||
- | ==== 開発 ==== | ||
- | ほとんどの拡張は、サーバプラグイン、Unix エージェントプラグイン、コンソール拡張といったそれぞれの章で説明しています。この章では、Pandora FMS との連携および、Windows エージェントのソースからのコンパイル方法について説明します。今後も、特定の章に属さない開発に関わる内容については、この章に記載していきます。 | ||
- | |||
- | === Pandora FMS プロジェクトへの協力 === | ||
- | このプロジェクトは、プロジェクトを支えるボランティアの開発者によって成り立っています。新たな開発者、ドキュメント作成者や、その他協力したいと考えている方は、常に歓迎です。まず最初は、メーリングリストやフォーラムに参加いただくのが良いです。 | ||
- | |||
- | |||
- | |||
- | === バグ / エラー === | ||
- | 不具合報告は、Pandora FMS の拡張の助けになります。なお、不具合報告を送信する前に、我々の不具合に関するデータベースを確認し、同様の報告がすでにあがっていないかを確認してください。不具合報告は、我々のプロジェクトページ http:// | ||
- | |||
- | === メーリングリスト === | ||
- | メーリングリストは、簡単に最新情報をメールで受け取るには良い手段です。ユーザ向けのお知らせを送信する public メーリングリスト (流量は少ないです) と、技術的な議論を行う develop メーリングリストを用意しています。また、SVN システムから自動的に通知される変更情報を受け取るためのメーリングリスト (ほぼ毎日) があります。 | ||
- | |||
- | ==== Windows エージェントのソースからのコンパイル ==== | ||
- | === 最新ソースの入手 === | ||
- | 我々のリポジトリから最新のソースを入手するには、Subversion クライアントが必要です。そして、次のように実行します。 | ||
- | |||
- | svn co https:// | ||
- | |||
- | === Windows === | ||
- | ソースからビルドするには、MinGW tools を含む最新の Dev-Cpp IDE 版が必要です。[[http:// | ||
- | |||
- | '' | ||
- | |||
- | ソースからのビルドで問題を見つけた場合は、メール (ramon.novoa@artica.es) もしくは [[http:// | ||
- | |||
- | === Linux でのクロスコンパイル === | ||
- | Linux で Pandora FMS Windows エージェントをクロスコンパイルするには、次のようにします。 | ||
- | |||
- | == Linux への MinGW のインストール == | ||
- | Ubuntu/ | ||
- | |||
- | sudo aptitude install mingw32 | ||
- | |||
- | SUSE または RPM 管理の環境の場合 (手動での Zypper の利用) は、以下の RUL より: | ||
- | |||
- | http:// | ||
- | |||
- | == エージェントに必要な追加ライブラリのインストール == | ||
- | |||
- | * win32api | ||
- | * odbc++ | ||
- | * curl | ||
- | * openssl | ||
- | * zlib | ||
- | * Boost C++ libraries (http:// | ||
- | |||
- | 例えば、Openssl パッケージをインストールするには次のようにします。 | ||
- | |||
- | http:// | ||
- | |||
- | openssl-0.9.8e-1cm.DevPak | ||
- | |||
- | openssl-0.9.8e-1cm.DevPak を展開します。 | ||
- | |||
- | tar jxvf openssl-0.9.8e-1cm.DevPak | ||
- | |||
- | ライブラリおよびインクルードファイルを MinGW のあるクロスコンパイル環境にコピーします。 | ||
- | |||
- | < | ||
- | cp lib/*.a / | ||
- | cp -r include/* / | ||
- | </ | ||
- | |||
- | 依存関係やライブラリの問題は、ご自身で解決する必要があります。 | ||
- | これらを簡単にできるように、Pandora FMS の公式ダウンロードサイトに必要なライブラリとインクルードファイルを tar で固めたファイルを // | ||
- | という名前で置いてあります。 | ||
- | |||
- | == コンパイルおよびリンク == | ||
- | コンパイラおよび、インクルードファイル、ライブラリのインストール後、Pandora FMS エージェントのソースディレクトリへ行き、以下を実行します。 | ||
- | |||
- | ./configure --host=i586-mingw32msvc && make | ||
- | |||
- | これで、実行可能な .exe ファイルが生成されます。 | ||
- | |||
- | ==== 外部 API ==== | ||
- | Pandora FMS には、他のアプリケーションとの連携をとり、Pandora FMS から情報を取得したり Pandora FMS に情報を提供するための外部 API があります。これに関するドキュメントは、補足資料の Pandora FMS 外部 API にあります。 | ||
- | |||
- | ==== Pandora FMS XML データファイルフォーマット ==== | ||
- | Pandora FMS の XML データファイルのフォーマットを理解することで、エージェントプラグインの拡張や、独自エージェントの作成、Pandora FMS データサーバへの独自 XML ファイルの送信などができるようになります。 | ||
- | |||
- | すべての XML ドキュメントど同じように、データファイルは次のような XML の宣言で始まります。 | ||
- | |||
- | <? | ||
- | |||
- | 次に、エージェントが送るデータを定義する **agent_data** 要素が来ます。次に示す属性に対応しています。 | ||
- | |||
- | * // | ||
- | * //group//: エージェントが属するグループ名 (Pandora FMS のデータベースに存在する必要があります) | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | * // | ||
- | |||
- | バージョン 5.1 からは、次のパラメータもあります。 | ||
- | |||
- | * // | ||
- | * // | ||
- | |||
- | XML ヘッダの例を見てみましょう。 | ||
- | |||
- | < | ||
- | |||
- | そして、モジュールごとに、**module** という要素が必要です。モジュールの定義のために、次の要素を入れることができます。 | ||
- | |||
- | * **name**: モジュールの名前。 | ||
- | * **description**: | ||
- | * **tags**: モジュールに関連付けられたタグ。 | ||
- | * **type**: モジュールのタイプ。(Pandora FMS のデータベースに存在する必要があります) | ||
- | * **data**: モジュールのデータ。 | ||
- | * **max**: モジュールの最大値。 | ||
- | * **min**: モジュールの最小値。 | ||
- | * **post_process**: | ||
- | * **module_interval**: | ||
- | * **min_critical**: | ||
- | * **max_critical**: | ||
- | * **min_warning**: | ||
- | * **max_warning**: | ||
- | * **disabled**: | ||
- | * **min_ff_event**: | ||
- | * **status**: モジュールの状態(正常、警告、障害)。status が設定されている場合は、警告および障害のしきい値は無視されます。 | ||
- | |||
- | Pandora FMS バージョン 749 から、しきい値を強制するための新たなトークンが追加されました。 | ||
- | |||
- | * **min_warning_forced**: | ||
- | * **max_warning_forced**: | ||
- | * **min_critical_forced**: | ||
- | * **max_critical_forced**: | ||
- | * **str_warning_forced**: | ||
- | * **str_critical_forced**: | ||
- | |||
- | <WRAP center round important 60%> | ||
- | これらのトークンは、**データサーバプラグイン** のみで動作します。 | ||
- | </ | ||
- | |||
- | その他の要素は、モジュールの拡張情報として Pandora FMS のデータベースに保存されます。 | ||
- | |||
- | {{ wiki: | ||
- | |||
- | モジュールは、少なくとも **name**, **type**, および **data** の要素を持たなければいけません。 | ||
- | |||
- | 例: | ||
- | |||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | |||
- | XML データファイルは任意の数のモジュール要素を持つことができます。最後に、**agent_data** タグをクローズするのを忘れないでください。 | ||
- | |||
- | アイテムリストによる、複数の XML データを含む特別なケースがあります。これは、文字列タイプの場合にのみ有効です。XML は次のようになります。 | ||
- | |||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | タイムスタンプは、それぞれの値ごとに定義できます。 | ||
- | |||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | </ | ||
- | |||
- | さらに、使用量の単位と閾値の定義を含んだ例を見てみましょう。 | ||
- | |||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | |||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | < | ||
- | </ | ||
- | </ |