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でのテストでは、topとatopは、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マニュアルを参照してください。