差分
このページの2つのバージョン間の差分を表示します。
次のリビジョン | 前のリビジョン最新のリビジョン両方とも次のリビジョン | ||
ja:documentation:05_big_environments:09_pandorafms_engineering [2021/06/17 13:24] – 作成 junichi | ja:documentation:05_big_environments:09_pandorafms_engineering [2023/11/14 06:22] – [Pandora FMS のデータベース設計] junichi | ||
---|---|---|---|
行 6: | 行 6: | ||
===== Pandora FMS の技術詳細 ===== | ===== Pandora FMS の技術詳細 ===== | ||
- | この補足資料では、いくつかの Pandora FMS の特別な機能および設計について説明します。Pandora FMS データベーススキーマなどのいくつかの技術的情報に対しては多くの説明が必要であり、ここに記載している内容はあくまでも概要です。 | + | This section explains some of the design principles and particularities of Pandora FMS. |
+ | |||
+ | この章では、いくつかの Pandora FMS の特別な機能および設計について説明します。 | ||
==== Pandora FMS のデータベース設計 ==== | ==== Pandora FMS のデータベース設計 ==== | ||
- | 0.83 から 1.1 までの Pandora FMS の初期バージョンでは、データベースに一つのデータに対して一つの挿入を行うという、とてもシンプルな考えに基づいていました。この方法は、開発がとても簡単で、簡単な検索や挿入などの操作をプログラムしやすくなっていました。 | + | |
+ | [[https:// | ||
+ | |||
+ | 0.83 から 1.1 までの | ||
+ | |||
+ | {{ : | ||
これは、多くの利点がありましたが、スケーラビリティに関しては大きな問題をもっていました。このシステムでは、サポートできるモジュールの最大数にある上限があり、一定数のデータで負荷が増大しクラスタリングの仕組みを実装しにくく、(5万を超える項目では) 処理も早くはありませんでした。 | これは、多くの利点がありましたが、スケーラビリティに関しては大きな問題をもっていました。このシステムでは、サポートできるモジュールの最大数にある上限があり、一定数のデータで負荷が増大しクラスタリングの仕組みを実装しにくく、(5万を超える項目では) 処理も早くはありませんでした。 | ||
行 15: | 行 22: | ||
MySQL クラスタをベースにしたソリューションは簡単ではなく、常に何らかの問題が発生していました。そして改善に長時間を要しました。 | MySQL クラスタをベースにしたソリューションは簡単ではなく、常に何らかの問題が発生していました。そして改善に長時間を要しました。 | ||
- | 現在のバージョンの Pandora FMS では、データの挿入におけるリアルタイムでのデータ圧縮を実装しています。それは、収集間隔に基づいたデータ圧縮を行います。また、特定の日付のデータを自動的に削除するような実装も行っています。 | + | The current version of Pandora FMS implements a **data compression** in real time for each insertion. It also allows data compression based on **interpolation**. The [[: |
+ | |||
+ | 現在のバージョンの Pandora FMS では、データの挿入におけるリアルタイムでの**データ圧縮**を実装しています。それは、収集間隔に基づいたデータ圧縮を行います。また、[[: | ||
+ | |||
+ | {{ : | ||
新たなデータ処理システムは、新しいデータのみを保持します。同じ値がシステムに入力された場合、それはデータベースに保存されません。これはデータベースを小さい状態に維持するのにとても便利です。これは、数値、インクリメンタルな数値、ブーリアン等のすべての Pandora FMS モジュールで動作します。ブーリアンデータでは、データの変化はまれであるため、とても高圧縮になります。それでもインデックスデータは、24時間ごとに保存されます。情報の圧縮により、参照するのに便利な最小限のデータとなります。 | 新たなデータ処理システムは、新しいデータのみを保持します。同じ値がシステムに入力された場合、それはデータベースに保存されません。これはデータベースを小さい状態に維持するのにとても便利です。これは、数値、インクリメンタルな数値、ブーリアン等のすべての Pandora FMS モジュールで動作します。ブーリアンデータでは、データの変化はまれであるため、とても高圧縮になります。それでもインデックスデータは、24時間ごとに保存されます。情報の圧縮により、参照するのに便利な最小限のデータとなります。 | ||
これは、データ量が 40%〜70% となり、スケーラビリティの問題を解決します。また、スケーラビリティの問題を解決するための Pandora FMS コンポーネントを分割するという別の解もあります。これは、データファイル処理の負荷を分散させたり、ネットワークモジュールを異なるサーバで実行できるというものです。現在、Pandora FMS ウェブコンソールのように、複数の Pandora FMS サーバ (ネットワークサーバ、データサーバや、SNMP サーバ) を持つことができ、また、データベースも (MySQL5 で) クラスタを組むことができます。 | これは、データ量が 40%〜70% となり、スケーラビリティの問題を解決します。また、スケーラビリティの問題を解決するための Pandora FMS コンポーネントを分割するという別の解もあります。これは、データファイル処理の負荷を分散させたり、ネットワークモジュールを異なるサーバで実行できるというものです。現在、Pandora FMS ウェブコンソールのように、複数の Pandora FMS サーバ (ネットワークサーバ、データサーバや、SNMP サーバ) を持つことができ、また、データベースも (MySQL5 で) クラスタを組むことができます。 | ||
+ | |||
+ | {{ : | ||
データの読み込みや処理の調整は大きな変化を意味します。我々は、新たなデータ保存モデルにおいて、すばやくデータを表示できるように、ゼロからグラフィックエンジンを設計、実装し直しました。新しいバージョンでは、エージェントが Pandora FMS と通信できず、Pandora FMS サーバがエージェントからデータを受け取れない場合、この欠落したデータはグラフに表示されません。そして、モジュールグラフについては、変化しません。 | データの読み込みや処理の調整は大きな変化を意味します。我々は、新たなデータ保存モデルにおいて、すばやくデータを表示できるように、ゼロからグラフィックエンジンを設計、実装し直しました。新しいバージョンでは、エージェントが Pandora FMS と通信できず、Pandora FMS サーバがエージェントからデータを受け取れない場合、この欠落したデータはグラフに表示されません。そして、モジュールグラフについては、変化しません。 | ||
行 38: | 行 51: | ||
もし、グラフにピークがある場合は、Pandora FMS エージェントと Pandora FMS サーバの接続において問題があるか、遅延が発生している可能性があります。ネットワークサーバからの接続においても問題が発生している可能性があります。 | もし、グラフにピークがある場合は、Pandora FMS エージェントと Pandora FMS サーバの接続において問題があるか、遅延が発生している可能性があります。ネットワークサーバからの接続においても問題が発生している可能性があります。 | ||
+ | |||
+ | {{ : | ||
Pandora のバージョン 5以降では、" | Pandora のバージョン 5以降では、" | ||
+ | {{ : | ||
- | {{ wiki: | + | In version 7 NG 759 it had a graph configuration menu that allowed adding percentiles, |
+ | バージョン 7 NG 759には、他のオプションに加えて、イベントやアラートが発生したときに、パーセンタイル、データをリアルタイムで追加できるグラフ設定メニューがあります。 | ||
+ | {{ : | ||
=== データベースにおけるインデックスの改良とその他技術的側面 === | === データベースにおけるインデックスの改良とその他技術的側面 === | ||
行 57: | 行 75: | ||
=== データベースのメインテーブル === | === データベースのメインテーブル === | ||
- | <WRAP center round tip 60%> (2020年12月23日時点の) Pandora FMS データベース構造のより 詳細については、[[http:// | + | <WRAP center round tip 60%> |
+ | |||
+ | You may get more information about Pandora FMS database structure (as of April 18, 2020) by following [[https:// | ||
+ | |||
+ | </ | ||
+ | |||
+ | <WRAP center round tip 60%> (2020年4月18日時点の) Pandora FMS データベース構造のより 詳細については、[[http:// | ||
以下に、ER図および、Pandora FMS データベースの主なテーブルの詳細説明を示します。残りのテーブルについても簡単に説明しています。 | 以下に、ER図および、Pandora FMS データベースの主なテーブルの詳細説明を示します。残りのテーブルについても簡単に説明しています。 | ||
行 69: | 行 93: | ||
* //nombre//: エージェント名。(大文字・小文字を区別します) | * //nombre//: エージェント名。(大文字・小文字を区別します) | ||
* // | * // | ||
- | * //comentarios//: フリーテキスト。 | + | * //comments//: フリーテキスト。 |
* // | * // | ||
* // | * // | ||
行 79: | 行 103: | ||
* // | * // | ||
* // | * // | ||
+ | * //remote: // エージェントのリモート設定の状態です。有効であれば 1 です。 | ||
* // | * // | ||
* // | * // | ||
* // | * // | ||
* // | * // | ||
+ | * // | ||
* **tagente_datos**: | * **tagente_datos**: | ||
* **tagente_datos_inc**: | * **tagente_datos_inc**: | ||
行 92: | 行 118: | ||
* // | * // | ||
* //estado//: モジュールの状態で、0 正常、1 障害、2 警告、3 不明 です。 | * //estado//: モジュールの状態で、0 正常、1 障害、2 警告、3 不明 です。 | ||
- | * //id_agente//: モジュールに関連づけられたエージェント ID。(tagente に関連) | + | * //id_agent//: モジュールに関連づけられたエージェント ID。(tagente に関連) |
* // | * // | ||
* // | * // | ||
行 192: | 行 218: | ||
* **tconfig**: | * **tconfig**: | ||
* **tconfig_os**: | * **tconfig_os**: | ||
- | * **tevento**: イベントエントリー。重要度の値はアラートと同じです。 | + | * **tevent**: イベントエントリー。重要度の値はアラートと同じです。 |
- | * **tgrupo**: Pandora FMS に定義されているグループ。 | + | * **tgrup**: Pandora FMS に定義されているグループ。 |
- | * **tincidencia**: インシデントエントリー。 | + | * **tincidence**: インシデントエントリー。 |
* **tlanguage**: | * **tlanguage**: | ||
* **tlink**: コンソールの下の方のメニューに表示されるリンク。 | * **tlink**: コンソールの下の方のメニューに表示されるリンク。 | ||
行 201: | 行 227: | ||
* **tnetwork_profile**: | * **tnetwork_profile**: | ||
* **tnetwork_profile_component**: | * **tnetwork_profile_component**: | ||
- | * **tnota**: インシデントに関連づけられたメモ。 | + | * **tnote**: インシデントに関連づけられたメモ。 |
- | * **torigen**: インシデントの発生元リスト。 | + | * **tsource**: インシデントの発生元リスト。 |
- | * **tperfil**: コンソールで定義されたユーザプロファイル。 | + | * **tprofile**: コンソールで定義されたユーザプロファイル。 |
* **trecon_task**: | * **trecon_task**: | ||
* **tserver**: | * **tserver**: | ||
- | * **tsesion**: ユーザの操作記録。 | + | * **tsession**: ユーザの操作記録。 |
- | * **ttipo_modulo**: 取得元およびデータの種類に応じた、モジュールの種類。 | + | * **ttype_modulo**: 取得元およびデータの種類に応じた、モジュールの種類。 |
* **ttrap**: SNMP コンソールで受信したトラップ。 | * **ttrap**: SNMP コンソールで受信したトラップ。 | ||
* **tusuario**: | * **tusuario**: | ||
行 228: | 行 254: | ||
=== リアルタイムでのデータ圧縮 === | === リアルタイムでのデータ圧縮 === | ||
+ | |||
+ | {{ : | ||
+ | |||
データベースの高負荷を避けるために、データ挿入時にサーバは簡単な圧縮を行います。データが一つ前のデータと同じ場合や、24時間以内に変化が内場合は、データベースに保存されません。 | データベースの高負荷を避けるために、データ挿入時にサーバは簡単な圧縮を行います。データが一つ前のデータと同じ場合や、24時間以内に変化が内場合は、データベースに保存されません。 | ||
行 248: | 行 277: | ||
=== データの削減 === | === データの削減 === | ||
Pandora FMS は、データベースに保存する情報を削減するシステムを持っています。これは中小規模のシステム(250-500エージェント、100, | Pandora FMS は、データベースに保存する情報を削減するシステムを持っています。これは中小規模のシステム(250-500エージェント、100, | ||
+ | |||
+ | {{ : | ||
毎日実行される Pandora FMS データベースのメンテナンスで、古いデータを検索し削減します。この削減は、単純な線形補完を用いて行われます。つまり、一日に 10, | 毎日実行される Pandora FMS データベースのメンテナンスで、古いデータを検索し削減します。この削減は、単純な線形補完を用いて行われます。つまり、一日に 10, | ||
行 254: | 行 285: | ||
=== ヒストリデータベース === | === ヒストリデータベース === | ||
- | これは Enterprise 版の機能で、指定した時点からのデータを保存します。例えば、1ヶ月以上前のデータを異なるデータベースに保存します。このデータベースは、異なる物理サーバ上にあるべきです(これを仮想化しないでください!)。1年間のグラフを表示しようとした場合、Pandora FMS は、自動的に最初の XX 日を現在のメインのデータベースから取得し、他の情報をヒストリデータベースから取得します。これにより、大量のデータを保存している場合において、パフォーマンスの問題を避けることができます。 | ||
- | これを設定するには、他のサーバにてヒストリデータベースの設定(Pandora FMS のデータベーススキーマをインポートし、データは入れる必要ありません)とメインの Pandora FMS サーバからのアクセスができるような設定を手動で行う必要があります。 | + | {{: |
- | **セットアップ(Setup)** | + | {{: |
+ | When a graph or report containing old data is shown, Pandora FMS will look for the first days in the main database, and when reaching the point when data are migrated to the history database, it will search there. Thanks to that, performance is optimized even when storing a high amount of information within the system. | ||
+ | 古いデータを含むグラフやレポートを表示しようとした時、Pandora FMS は、自動的に直近のデータをメインのデータベースから取得し、それより古い情報をヒストリデータベースから取得します。これにより、大量のデータを保存している場合において、パフォーマンスの問題を避けることができます。 | ||
- | {{ wiki: | + | これを設定するには、他のサーバにてヒストリデータベースの設定(Pandora FMS のデータベーススキーマをインポートし、データは入れる必要ありません)とメインの Pandora FMS サーバからのアクセスができるような設定を手動で行う必要があります。 |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | 必要な設定項目について以下に説明します。 | + | |
- | + | ||
- | **Days** | + | |
- | + | ||
- | | + | |
- | **Rate** | + | Go to **Setup** → **Setup** |
- | | + | **セットアップ(Setup)** → **セットアップ(Setup)** → **ヒストリデータベース(Historical database)** へ行き、そこでヒストリデータベースへアクセスするための[[: |
- | **Delay** | + | {{ : |
- | // | ||
== 詳細設定 == | == 詳細設定 == | ||
行 302: | 行 324: | ||
=== 状態はいつ変更されるのか === | === 状態はいつ変更されるのか === | ||
- | それぞれのモジュールには、警告や障害状態のしきい値の設定があります。これらのしきい値は、データの値によっていそれぞれの状態になるということを定義します。モジュールのデータがこれらのしきい値の範囲から外れれば、正常状態と認識されます。 | ||
- | それぞれのモジュールには、データを収集する間隔の設定もあります。データ収集の間隔はコンソールで確認されます。もし、モジュールが収集間隔の 2倍の期間データを収集できなかった場合、そのモジュールは不明状態となります。 | + | * Each module has '' |
+ | * These thresholds define its data values for which these status will be activated. | ||
+ | * If the module gives data out of these thresholds, then it will be considered to be in Normal status. | ||
+ | * Each module also has a time interval that will set the frequency with which it will get data. | ||
+ | * This interval will be taken into account by the console to collect data. | ||
+ | * If the module has not collected data for twice its interval, this module will be considered to be in '' | ||
+ | * Finally, if the module has alerts configured and any of them has been triggered but not validated, then the module will have the corresponding Triggered Alert status. | ||
- | 最後に、モジュールにアラート設定があり、アラートが発生し承諾されていなければ、モジュールはアラート発生状態となります。 | + | * それぞれのモジュールには、'' |
+ | * これらのしきい値は、データの値によっていそれぞれの状態になるということを定義します。 | ||
+ | * モジュールのデータがこれらのしきい値の範囲から外れれば、正常状態と認識されます。 | ||
+ | * それぞれのモジュールには、データを収集する間隔の設定もあります。 | ||
+ | * データ収集の間隔はコンソールで確認されます。 | ||
+ | * もし、モジュールが収集間隔の 2倍の期間データを収集できなかった場合、そのモジュールは不明状態となります。 | ||
+ | * 最後に、モジュールにアラート設定があり、アラートが発生し承諾されていなければ、モジュールはアラート発生状態となります。 | ||
=== 伝播と優先度 === | === 伝播と優先度 === | ||
Pandora の仕組においては、いくつかの要素は他に依存しています。たとえば、一つのエージェントにおけるモジュールや、一つのグループにおけるエージェントです。これらはまた、Pandora FMS エンタープライズポリシーに適用することができます。ポリシーは、個々のエージェントに割り当てられたもののように、いくつかのエージェントおよびモジュールを関連付けることができます。 | Pandora の仕組においては、いくつかの要素は他に依存しています。たとえば、一つのエージェントにおけるモジュールや、一つのグループにおけるエージェントです。これらはまた、Pandora FMS エンタープライズポリシーに適用することができます。ポリシーは、個々のエージェントに割り当てられたもののように、いくつかのエージェントおよびモジュールを関連付けることができます。 | ||
+ | |||
+ | {{ : | ||
この構造は、モジュールの状態を簡単に評価するには特に便利です。これにより、エージェント、グループ、およびポリシーの状態を仕組の中で伝播していくことができます。 | この構造は、モジュールの状態を簡単に評価するには特に便利です。これにより、エージェント、グループ、およびポリシーの状態を仕組の中で伝播していくことができます。 | ||
行 315: | 行 350: | ||
== エージェントがとりうる状態 == | == エージェントがとりうる状態 == | ||
エージェントの状態は、モジュールの状態の中で最も悪い状態を採用します。グループの状態は、それに属するエージェントの中で最も悪い状態を採用します。そして、ポリシーの状態も同様で、割り当てられたエージェントの最も悪い状態を採用します。 | エージェントの状態は、モジュールの状態の中で最も悪い状態を採用します。グループの状態は、それに属するエージェントの中で最も悪い状態を採用します。そして、ポリシーの状態も同様で、割り当てられたエージェントの最も悪い状態を採用します。 | ||
+ | |||
+ | {{ : | ||
これにより、たとえば、障害状態の一つのグループを見ることによって、そこに属する少なくとも一つのエージェントがそれと同じ状態であることがわかります。それを特定したら、上位レベルへ障害状態を伝播させる原因となったモジュールへと、細かいレベルへの情報へ掘り下げていくことができます。 | これにより、たとえば、障害状態の一つのグループを見ることによって、そこに属する少なくとも一つのエージェントがそれと同じ状態であることがわかります。それを特定したら、上位レベルへ障害状態を伝播させる原因となったモジュールへと、細かいレベルへの情報へ掘り下げていくことができます。 | ||
行 330: | 行 367: | ||
アラートが発生した場合、その状態は他よりも優先順位が高く、エージェントもこの状態となり、またこのエージェントが属するグループもこの状態となることがわかります。 | アラートが発生した場合、その状態は他よりも優先順位が高く、エージェントもこの状態となり、またこのエージェントが属するグループもこの状態となることがわかります。 | ||
+ | |||
+ | {{ : | ||
言い換えると、例えば一つのグループが正常状態であれば、そのグループの全エージェントは正常状態であり、全てのモジュールが正常状態であるといえます。 | 言い換えると、例えば一つのグループが正常状態であれば、そのグループの全エージェントは正常状態であり、全てのモジュールが正常状態であるといえます。 | ||
行 349: | 行 388: | ||
==== Pandora FMS グラフ ==== | ==== Pandora FMS グラフ ==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
グラフは、Pandora FMS の実装において最も複雑なもののひとつです。なぜなら、DB からリアルタイムで情報を収集していて(rrdtool などの)外部のツールは利用していないためです。 | グラフは、Pandora FMS の実装において最も複雑なもののひとつです。なぜなら、DB からリアルタイムで情報を収集していて(rrdtool などの)外部のツールは利用していないためです。 | ||
+ | |||
+ | {{ : | ||
グラフにはいくつかの動きがあり、それはデータのタイプに依存します。 | グラフにはいくつかの動きがあり、それはデータのタイプに依存します。 |