Sidebar

jp:manual:appendix:performance_tuning

10 パフォーマンスチューニング

作成中です。

概要

最高の性能を出すために、Zabbixシステムを適切に調整することは、非常に重要です。

ハードウェア

ハードウェアに関する一般的なアドバイスを以下に示します。

  • できる限り最速のプロセッサを使用してください。
  • SCSIまたはSASのパフォーマンスは、IDEやSATAよりも優れています(IDEディスクのパフォーマンスは、hdparmユーティリティを使用することによって大幅に向上させることが可能です)。
  • 7200 RPMよりも10K RPM、10K RPMよりも15K RPMの方が高性能です。
  • 高速RAIDストレージを使用してください。
  • 高速イーサネットアダプタを使用してください。
  • メモリ容量はできる限り大きくしてください。

オペレーティングシステム

  • 最新バージョン(安定版)のOSを使用してください。
  • カーネルから不要な機能を排除してください。
  • カーネルパラメータを調整してください。

Zabbix設定パラメータ

最適なパフォーマンスを得るために、多くのパラメータを調整できます。

zabbix_server

StartPollers

原則として、このパラメータの値はできる限り小さくします。zabbix_serverのインスタンスを1つ追加するたびに既知のオーバーヘッドが増加し、同時に並列処理も増えます。最適なインスタンス数になるのは、概して、キューに含まれるパラメータが最小限(理想は常に0)のときです。この値は、内部チェックZabbix[queue]を使用することで監視できます。

最適なZabbixプロセス数を設定する方法については、このページ一番下の「こちらも参照」セクションを参照してください。

DebugLevel

最適な値は3です。

DBSocket

これはMySQLのみ利用できます。データベース接続に、DBSocketを使用することをお奨めします。これが最も速く、最も安全な方法です。

データベースエンジン

Zabbixの調整で最も重要なのは、データベースエンジンでしょう。Zabbixは、データベースエンジンの可用性とパフォーマンスに大きく依存しています。

  • 最速のデータベースエンジン(すなわちMySQL)を使用してください。
  • 安定したリリースのデータベースエンジンを使用してください。
  • 最高のパフォーマンスを得るために、ソースからMySQLまたはPostgreSQLを再構築してください。
  • MySQLまたはPostgreSQLのドキュメントに記載されているパフォーマンス調整の指示に従ってください。
  • MySQLの場合、InnoDBテーブル構造を使用してください。
  • InnoDBを使用した場合、MyISAMを使用した場合と比較して、ZABBIXは少なくとも1.5倍は動作が高速になります。これは、並行処理が向上するためです。しかしながら、InnoDBは、強力なCPU性能を必要とします。
  • 最高のパフォーマンスを得るために、データベースサーバを調整することを強く推奨します。
  • データベースのテーブルを別のハードディスクに保存してください。
  • 「history」、「history_str」、「items」、「functions」、「triggers」および「trends」は、最も頻繁に使用されるテーブルです。
  • 大規模なインストールの場合、tmpfs内のMySQLテンポラリファイルを保持することを推奨します。

一般的アドバイス

  • 必要なパラメータのみを監視してください。
  • すべてのアイテムに関して「更新間隔」を調整してください。更新間隔を短く設定すれば、良好なグラフが得られますが、Zabbixが過負荷に陥る可能性があります。
  • デフォルトのテンプレートのパラメータを調整してください。
  • housekeeperのパラメータを調整してください。
  • 同一情報を返すパラメータは監視しないでください。
  • 関数の引数として長時間の値が指定されたトリガーの使用を避けてください。例えば、max(3600)の計算は、max(60)に比べて、計算速度は著しく遅くなります。

「ps」と「top」を使用して、Zabbixプロセスのパフォーマンスを確認する

Zabbix 2.2は新機能を導入しています。プロセスが、現在のアクティビティや重要な統計データを表示するために、コマンドラインを次のように変更します。

UID        PID  PPID  C STIME TTY      TIME CMD
zabbix22  4584     1  0 14:55 ?    00:00:00 zabbix_server -c /home/zabbix22/zabbix_server.conf
zabbix22  4587  4584  0 14:55 ?    00:00:00 zabbix_server: configuration syncer [synced configuration in 0.041169 sec, idle 60 sec]
zabbix22  4588  4584  0 14:55 ?    00:00:00 zabbix_server: db watchdog [synced alerts config in 0.018748 sec, idle 60 sec]
zabbix22  4608  4584  0 14:55 ?    00:00:00 zabbix_server: timer #1 [processed 3 triggers, 0 events in 0.007867 sec, 0 maint.periods in 0.005677 sec, idle 30 sec]
zabbix22  4609  4584  0 14:55 ?    00:00:00 zabbix_server: timer #2 [processed 2 triggers, 0 events in 0.004209 sec, idle 30 sec]
zabbix22  4637  4584  0 14:55 ?    00:00:01 zabbix_server: history syncer #4 [synced 35 items in 0.166198 sec, idle 5 sec]
zabbix22  4657  4584  0 14:55 ?    00:00:00 zabbix_server: vmware collector #1 [updated 0, removed 0 VMware services in 0.000004 sec, idle 5 sec]
zabbix22  4670     1  0 14:55 ?    00:00:00 zabbix_proxy -c /home/zabbix22/zabbix_proxy.conf
zabbix22  4673  4670  0 14:55 ?    00:00:00 zabbix_proxy: configuration syncer [synced config 15251 bytes in 0.111861 sec, idle 60 sec]
zabbix22  4674  4670  0 14:55 ?    00:00:00 zabbix_proxy: heartbeat sender [sending heartbeat message success in 0.013643 sec, idle 30 sec]
zabbix22  4688  4670  0 14:55 ?    00:00:00 zabbix_proxy: icmp pinger #1 [got 1 values in 1.811128 sec, idle 5 sec]
zabbix22  4690  4670  0 14:55 ?    00:00:00 zabbix_proxy: housekeeper [deleted 9870 records in 0.233491 sec, idle 3599 sec]
zabbix22  4701  4670  0 14:55 ?    00:00:08 zabbix_proxy: http poller #2 [got 1 values in 0.024105 sec, idle 1 sec]
zabbix22  4707  4670  0 14:55 ?    00:00:00 zabbix_proxy: history syncer #4 [synced 22 items in 0.008565 sec, idle 5 sec]
zabbix22  4738     1  0 14:55 ?    00:00:00 zabbix_agentd -c /home/zabbix22/zabbix_agentd.conf
zabbix22  4739  4738  0 14:55 ?    00:00:00 zabbix_agentd: collector [idle 1 sec]
zabbix22  4740  4738  0 14:55 ?    00:00:00 zabbix_agentd: listener #1 [waiting for connection]
zabbix22  4741  4738  0 14:55 ?    00:00:00 zabbix_agentd: listener #2 [processing request]

メインプロセスは例外です。現在のアクティビティの代わりに、元のコマンドラインが表示されます。複数のZabbixインスタンスを備えるシステム上のプロセスを識別できます。

この機能は、Microsoft Windows用には実装されていません。

ロギングレベルをDebugLevel=4に設定した場合、アクティビティメッセージと統計メッセージがログファイルに書き込まれます。

Linux

Linuxシステムにおいては、Zabbixの動作を監視するために、ps コマンドをwatchコマンドと一緒に使用できます。例えば、1秒に5回、psコマンドを実行してプロセスアクティビティを確認します。

watch -n 0.2 ps -fu zabbix

Zabbixプロキシとエージェントプロセスを表示する場合:

watch -tn 0.2 'ps -f -C zabbix_proxy -C zabbix_agentd'

履歴同期処理のみを表示する場合:

watch -tn 0.2 'ps -fC zabbix_server | grep history'

psコマンドは、アクティビティメッセージが長いため、広範な出力(約190列)を生成します。お使いの端末の列数が190列未満の場合は、以下を試行できます。

watch -tn 0.2 'ps -o cmd -C zabbix_server -C zabbix_proxy -C zabbix_agentd'

UID、PID、開始時間などを伴わない、コマンドラインを表示します。

Zabbixパフォーマンスを監視するために、topコマンドも使用できます。topコマンド使用時に[c]キーを押すと、コマンドラインと処理が表示されます。Linuxでのテストでは、topatopは、Zabbixプロセスのアクティビティの変更を正確に表示しましたが、htopは、アクティビティの変更を表示していませんでした。

BSDシステム

watchコマンドがインストールされていない場合、以下を実行することにより、同様の効果を得ることができます。

while [ 1 ]; do ps x; sleep 0.2; clear; done

AIX、HP-UX

watchコマンドが利用できない場合、以下を実行します。

while [ 1 ]; do ps -fu zabbix; sleep 1; clear; done
Solaris

デフォルトでは、psコマンドは、アクティビティの変更を表示しません。その代わりとして、オプションの1つに、/usr/ucb/psを使用することがあります。watchコマンドがインストールされていない場合は、以下を実行することにより、定期的に更新されるプロセスのリストを表示することができます。

while [ 1 ]; do /usr/ucb/ps gxww; sleep 1; clear; done

Solaris 11においては、sleepコマンドは1秒未満の値を指定できます(例:sleep 0.2)。

こちらも参照


本ページは2014/08/05時点の原文を基にしておりますので、内容は必ずしも最新のものとは限りません。
最新の情報は、英語版のZabbix2.2マニュアルを参照してください。