Difference between revisions of "Pandora 3.0: Documentation ja: Anexo HighCapacity"

From Pandora FMS Wiki
Jump to: navigation, search
(XML データ処理のスループット計測)
(No difference)

Revision as of 14:07, 7 May 2011

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

1 Pandora FMS のキャパシティ計測

この章では、高いキャパシティが必要な環境での Pandora FMS を設定するための異なる手法を説明します。また、処理を実行する環境を調整するのに便利な負荷テストを行うためのツールについても説明します。

Pandora FMS は、1つのサーバでデータベース、コンソール、サーバを動かした場合、2000エージェントに対応できるように設定されています。推奨するエージェント数は、だいたい 1200 から 1500 くらいです。しかし、この数は、XML エージェントの割合、リモートモジュールの割合、監視間隔、システムのメモリ量に応じて変化します。これらの全ての要素が、1つのシステムで管理できるエージェント数に関わります。

2 incoming ディレクトリでの RAM ディスク (tmpfs) の利用

エージェントから大量の XML が送られてくるような環境では、/var/spool/pandora/data_in ディレクトリの大量の読み書きが発生します。このファイルシステムをメモリ上に置くと、XML 処理のパフォーマンスが 25% 上昇します。

/var/spool/pandora/data_in_RAM パーティションを作成するするには、次のコマンドを実行します。

mount -t tmpfs -o size=100M,nr_inodes=10k,mode=770 tmpfs /var/spool/pandora/data_in_RAM

/etc/inittab で設定すれば、システム起動時にこのパーティションが作成されます。なおディレクトリは作成済で空である必要があります。

tmpfs /var/spool/pandora/data_in_RAM tmpfs size=100M,nr_inodes=10k,mode=770 0 0

もちろん、これは 100MB の容量制限があります。いっぱいになると処理が停止します。ポリシーやリモート設定を使っている場合は、/data_in ディレクトリの下にそれらに必要なディレクトリ (collections, md5, conf およびその他) が存在します。これらも次のようなコマンドで、パスを調整する必要があります。

mv /var/spool/pandora/data_in /var/spool/pandora/data_in_old
ln -s /var/spool/pandora/data_in /var/spool/pandora/data_in_RAM
ln -s /var/spool/pandora/data_in_old/md5 /var/spool/pandora/data_in_RAM/md5
ln -s /var/spool/pandora/data_in_old/conf /var/spool/pandora/data_in_RAM/conf
ln -s /var/spool/pandora/data_in_old/collections /var/spool/pandora/data_in_RAM/collections

3 同一システムにおける多くのリクエスト

複数プロセッサ (2つ以上の物理コア) のサーバにおいて多くの処理を実行する必要がある場合、Pandora のいくつかのサーバの複数インスタンスを同一マシン上で上げることにより実現できます。これは、サーバのスレッド数を増やすということではなく、Linux kernel および Perl の仮想マシンの設計を使って、同一のプロセスで多くのスレッドを使うのではなく、複数のプロセスで多くのコアを使うという考えです。

Pandora FMS が遅延なく全ての情報を処理できないような場合にこの技術を使うことができます。この方法では、別の Pandora FMS サーバを別のディレクトリにインストールする必要があることを意味しています。もちろん、それぞれ別々のサーバ名で別々の pandora_server.conf があります。また、サーバの起動スクリプト等を若干修正する必要もあります。

4 高キャパシティサーバの設定例

例えば、16GB の RAM および 4 CPU のマシンで、データサーバが最大のパフォーマンス (XML 処理) を出すように最適化したいと思います。

4.1 my.cnf

(重要なパラメータのみを示しています)

key_buffer              = 1G
innodb_flush_log_at_trx_commit = 0
innodb_file_per_table
skip-locking
innodb_thread_concurrency = 16
max_allowed_packet      = 160M
query_cache_limit       = 50M
query_cache_size        = 360M
innodb_buffer_pool_size=9000M
innodb_additional_mem_pool_size=800M
innodb_log_file_size=2500M
innodb_log_buffer_size=80M
innodb_lock_wait_timeout=50

4.2 pandora_server.conf

(重要なパラメータのみを示しています)

verbose 1
server_threshold 15
dataserver_threads 5
max_queue_files 1000

以下の点を認識しておく必要があります。

  • とても多くのスレッド (+5) は、ネットワークサーバやプラグインサーバのような、大きなキューの処理にのみ有効です。データサーバの場合、常に処理を実行しており、パフォーマンスを低下させる可能性があります。そのために、ここでは 5 に設定しています。DB が遅いシステムでは、スレッドを少なくするべきです。1 から 10 の間を試してみてください。ネットワークサーバの最適化の場合は、数は大きく、10 と 30 の間を試してみてください。
  • サーバの threshold が大きい (15) と、DB への影響が少なくなり、処理できる最大ファイル数が増加します。それにより、サーバは常にファイルを読み込むことができ、バッファに蓄えます。これらの 2つの設定要素は関連があります。ネットワークサーバの最適化では、threshold を低めの 5 か 10 にすると良いでしょう。
  • agent_access (コンソールから設定できます) のようないくつかの設定パラメータは、Pandora FMS のパフォーマンスに多くの影響を与えます。

5 キャパシティ分析ツール (Capacity)

Pandora FMS には、ハードウエアおよびソフトウエアで、取得可能なデータ量を適切に計測できるいくつかのツールがあります。一つは、ダミーデータで直接データベースへアクセスするもの (dbstress)、もう一つは、ダミーの XML ファイルを生成するもの (xml_stress) です。

5.1 Pandora FMS の XML 負荷

Pandora FMS エージェントから送られるような XML データファイルを生成する小さなスクリプトが /usr/share/pandora_server/util/pandora_xml_stress.pl にあります。

このスクリプトは、エージェント名をテキストファイルから読み込み、テンプレートでモジュールが定義されている設定ファイルに基づいて、各エージェントの XML データファイルを生成します。

モジュールの値はランダムな値になります。モジュールデータの初期値および変化率は設定可能です。

スクリプトは次のように実行します。

./pandora_xml_stress.pl <configuration file>

設定ファイルの例を示します。

# Maximum number of threads, by default 10.
max_threads 10

# File containing a list of agent names (one per line).
agent_file agent_names.txt

# Directory where XML data files will be placed, by default /tmp.
temporal /var/spool/pandora/data_in

# Pandora FMS XML Stress log file, logs to stdout by default.
log_file pandora_xml_stress.log

# XML version, by default 1.0.
xml_version 1.0

# XML encoding, by default ISO-8859-1.
encoding ISO-8859-1

# Operating system (shared by all agents), by default Linux.
os_name Linux

# Operating system version (shared by all agents), by default 2.6.
os_version 2.6

# Agent interval, by default 300.
agent_interval 300

# Data file generation start date, by default now.
time_from 2009-06-01 00:00:00

# Data file generation end date, by default now.
time_to 2009-06-05 00:00:00

# Delay after generating the first data file for each agent to avoid
# race conditions when auto-creating the agent, by default 2.
startup_delay 2

# Address of the Tentacle server where XML files will be sent (optional).
# server_ip 192.168.50.1

# Port of the Tentacle server, by default 41121.
# server_port 41121

# Module definitions. Similar to pandora_agent.conf.

module_begin
module_name Module_1
module_type generic_data
module_descripcion Module 1 description.
module_max 100
module_min 0
# Probability of the module data changing, by default 100%
module_variation 100
module_end

module_begin
module_name Module_2
module_type generic_data_string
module_descripcion Module 2 description.
# Maximum string length, by default 0.
module_max 20
# Minimum string length, by default 0
module_min 10
module_end

module_begin
module_name Module_3
module_type generic_proc
module_descripcion Module 3 description.
# Initial data.
module_data 1
module_end

5.1.1 エージェントのローカル設定の送受信

"pandora_xml_stress.conf" で、"get_and_send_agent_conf" を 1 に設定して実行した場合、テスト負荷エージェントで、通常のエージェントのように設定ファイルおよび md5 を送ることができます。エンタープライズ版の Pandora コンソールでは、pandora_xml_stress で次に何を実行するのか、リモートでの設定変更を行うことができます。pandora_xml_stress.conf ではなく、エンタープライズ版の Pandora コンソールから行った設定を利用するようになります。

ほかにも、"pandora_xml_stress.conf" 内の "directory_confis" にて、テストエージェントの設定をどこに保存するかをい設定できます。

5.2 データサーバの処理能力の計測方法

"pandora_count.sh" というスクリプトが Pandora FMS サーバパッケージの /util ディレクトリにあります。このスクリプトは、データサーバの XML ファイル処理率を計測するのに利用します。このツールは、/var/spool/pandora/data_in に残っているファイルを利用します。そのため、未処理の数千のファイルを用意しておく (もしくは前述のツールで生成しておく) 必要があります。このスクリプトは、現在存在するファイルをカウントし、10秒前に処理したものを除外し、結果を 10 で割ることによって、1秒間の処理率を求めています。これは初歩的なソリューションですが、サーバの設定を修正するための情報を提供します。

5.3 Pandora FMS の DB 負荷

データベースパフォーマンスを確認するためのツールがあります。これはまた、架空のデータを定期的もしくは不定期に生成するためにも利用できます。エージェントを作成し、このツールを使って自動的にデータを挿入するためのモジュールを作成しておく必要があります。

  • random: 不定期データを生成します。
  • curve: 三角関数を利用して曲線データを生成します。異なる間隔で補完を見るのに便利です。
  • boolean: ランダムな boolean データを生成します。

random, curve および boolean という語を含む任意の名前を使うことができます。

  • random_1
  • curve_other

data_server モジュールのみ選択することができます。


5.3.1 Pandora FMS の DB 負荷 ツールの調整

このツールは、すべてのエージェントから、randomcurve または boolean という名前がついかモジュールを検索するようにあらかじめ設定されています。また、実行間隔は 300秒から 30日の間を指定できます。

もしこの設定を変更したい場合は、pandora_dbstress スクリプトを編集し、ファイルの先頭にあるいくつかの変数を変更する必要があります。

# Configure here target (AGENT_ID for Stress)
my $target_module = -1; # -1 for all modules of that agent
my $target_agent = -1;
my $target_interval = 300;
my $target_days = 30;

最初の行の target_module の設定では、対象のモジュールを指定するか -1 を指定すると全てが対象になります。 2行目の target_agent は、エージェントの指定です。 3行目の target_interval は、秒単位で実行間隔を指定します。 4行目の target_days は、現在日時から何日後までかを表します。