Zabbix設定ファイルの注意点
Zabbix構築時に、zabbix_server.conf や zabbix_proxy.conf や zabbix_agentd.conf の設定は重要なのですが、意外と日本語での情報が少ないようなのでこれらの設定の中で重要なものにしぼって解説をしたいと思います。
zabbix_server.conf
参考: http://www.zabbix.com/documentation/jp/1.8/manual/processes/zabbix_server
重要度 高 (重大な問題が発生する可能性がある)
- CacheSize
- 設定キャッシュサイズ(バイト単位)。ホストとアイテムデータを記憶させる共有メモリサイズ。
- 足りないとZabbixサーバプロセスがクラッシュします。
- デフォルト設定値は8MBですが、hostsテーブルとitemsテーブルの中身を保持するための領域なので、これらのテーブルのサイズがどの程度か注意しておくこと。
- ただ、大きく設定しすぎるとメモリを食いすぎて、起動に時間がかかりすぎます。
- MaxHousekeeperDelete
- Housekeeper(ヒストリなどの保持期限が過ぎたデータを削除するプロセス)が、1回削除動作をする際に実行する、1アイテムあたりに削除する最大行数
- デフォルトでは500行になっているため、1時間に1回Housekeeperが動作する場合、1時間に1アイテムについてヒストリが500行以上溜まるような環境ではDBサイズが単調増加していく。最終的にはディスクが枯渇する可能性があります。
- 削除すべきものを全て削除したいならば、0 に設定することで無制限に削除してくれます。ただ、DBへの負荷は向上するかもしれません。
- ProxyConfigFrequency
- Zabbix Proxyをパッシブモードで使用時に、監視設定情報を更新する間隔
- デフォルトは3600秒(1時間)。これはつまり、あるホストをProxy経由での監視に切り替えた場合、最悪1時間Proxy経由での監視がされない、ということ。しかもWebUIでProxy経由に切り替えたタイミングでサーバからも監視されなくなるため、監視情報がProxyに伝えられる(最悪1時間)まで、一切の監視がされない状態になる。
- せめて600秒(10分)間隔くらいが適切だと思います。
- なお、Zabbix Proxyをアクティブモードで使用時には、zabbix_proxy.confにこれに相当する設定項目があるので、同様に重要。
重要度 中 (何か問題がある場合に設定すると改善する可能性がある)
- LogSlowQueries
- 処理に時間が掛かっているクエリを表示してくれる
- パフォーマンス解析時に調査が楽になるかも
- StartDiscoverers、StartHTTPPollers、StartIPMIPollers、StartPingers、StartPollersUnreachable、StartPollers、StartTrappers
zabbix_proxy.conf
参考: http://www.zabbix.com/documentation/jp/1.8/manual/processes/zabbix_proxy
重要度 高 (重大な問題が発生する可能性がある)
- CacheSize
- 設定キャッシュサイズ(バイト単位)。ホストとアイテムデータを記憶させる共有メモリサイズ。
- 足りないとZabbix Proxyプロセスがクラッシュします。
- デフォルト設定値は8MBですが、hostsテーブルとitemsテーブルの中で、そのプロキシに割り当てられている監視情報を保持するための領域なので、これらのテーブルのサイズがどの程度か注意しておくこと。
- ただ、大きく設定しすぎるとメモリを食いすぎて、起動に時間がかかりすぎます。
- ConfigFrequency
- Zabbix Proxyをアクティブモードで使用時に、監視設定情報を更新する間隔
- デフォルトは3600秒(1時間)。これはつまり、あるホストをProxy経由での監視に切り替えた場合、最悪1時間Proxy経由での監視がされない、ということ。しかもWebUIでProxy経由に切り替えたタイミングでサーバからも監視されなくなるため、監視情報がProxyに伝えられる(最悪1時間)まで、一切の監視がされない状態になる。
- せめて600秒(10分)間隔くらいが適切だと思います。
- なお、Zabbix Proxyをパッシブモードで使用時には、zabbix_server.confにこれに相当する設定項目があるので、同様に重要。
- ProxyOfflineBuffer
- Zabbixサーバへの接続ができない場合に、プロキシ内のDBにデータを保持する期限。
- デフォルトだと1時間ですが、この場合1時間以上プロキシ・サーバ間のコネクションがロストすると、データが失われます。
- 24時間貯めてもそれほど大きくはならないので、mysqlとかそこそこ良いDBを使って、容量があるならもっと増やしても良いよ思います。
重要度 中 (何か問題がある場合に設定すると改善する可能性がある)
- LogSlowQueries
- 処理に時間が掛かっているクエリを表示してくれる
- パフォーマンス解析時に調査が楽になるかも
- StartDiscoverers、StartHTTPPollers、StartIPMIPollers、StartPingers、StartPollersUnreachable、StartPollers、StartTrappers
zabbix_agentd.conf
参考(Un*x): http://www.zabbix.com/documentation/jp/1.8/manual/processes/zabbix_agentd
参考(Windows): http://www.zabbix.com/documentation/jp/1.8/manual/processes/zabbix_agentd_win
重要度 高 (重大な問題が発生する可能性がある)
- MaxLinesPerSecond
- 監視可能な1秒あたりの最大ログ行数を設定する。
それ以上のログが出力された場合はログが送信されない。(訂正: コメントで指摘もらいましたが、次回監視時にログ送信が分割されるので、最終的にすべてのログは送信されます。失礼しました) - さらに、送信すべきログ行がMaxLinesPerSecondを越えるだけでなく、送信しない行もふくめてMaxLinesPerSecond x 4を越えた場合もこの制限に掛かる。
- 内部で実際に使用されている計算式は次の通り
- 「今回監視時の送信対象のログ行数 / アイテムの監視間隔(秒)」がMaxLinesPerSecondを越えると条件に掛かります
- 「今回監視時の増加ログ行数 / アイテムの監視間隔(秒)」がMaxLinesPerSecond * 4を越えると条件に掛かります。「今回監視時の増加ログ行数」は送信対象のログ行だけでなく、送信対象外のログ行も加算したものになります。
- デフォルトは100だけど、大丈夫ですか?
- 監視可能な1秒あたりの最大ログ行数を設定する。
重要度 中 (何か問題がある場合に設定すると改善する可能性がある)
- Hostname
- ホスト名を入力する
- ZabbixのWebUIに登録しておく名前と一致させておかないと、アクティブチェックが正常に動作しません。特にログ監視
- 大文字・小文字を区別するので、気をつけること
- EnableRemoteCommands
- リモートコマンドを利用する場合にチェックしておくこと
- system.run[]やユーザパラメータを使用するならチェックしておくこと
- RefreshActiveChecks
- アクティブチェックの監視情報を取得する間隔
- ログ監視などのアクティブチェックの項目は、設定後、有効になるまで最低限この間隔だけ待つ必要がある
- StartAgents
- 監視エージェントのプロセス数
- ある特定のエージェントで多数の項目を監視していて、そのホストでのみ監視遅延が発生している場合、この数を増加することで改善する場合がある
- UnsafeUserParameters
- あまり安全でない文字をユーザパラメータで使用することを許可するオプション。
- ユーザパラメータで「\」などを使用する場合にこれをチェックしておかないと実行できない。Windowsの場合は比較的、これに引っかかりやすい。