ZabbixのHousepeeper
ZabbixにはHousekeeperと呼ばれる、過去から蓄積された履歴データのうち、古いものを削除する処理を担う物がある。
日々、蓄積され続ける監視データは定期的に削除しないと監視DBが肥大化することは火を見るより明らかなので、Housekeeperの設定は密かに重要な項目だ。
ただし、この手の作業は得てして負荷が上がりやすいので実行タイミングや間隔、処理の重さなどを適切に設定しないと、高負荷に陥り肝心の監視処理に遅延を及ぼすこともある。
構築当初は監視エントリも少ないのでDefault設定でも何ら問題が起きないのだが、監視エントリの増加に伴い、以下のような通知を出すようになってきたので対処を考えてみる。
エラー内容
Zabbix housekeeper processes more than 75% busy
何が起きているか
読んで字のごとく、Housekeeperの処理でCPU負荷が75%を超過している、ということを示すのだが、たいていこれが発生している時は100%に張り付いている。
自分だけでなく、多くの人が気になっているようでちょっとググるだけで多くの記事が有り、フォーラムにもそれ専用のスレッドが立っているので調査方法はありそう。
対処法
sourceも見てみたが対処法は無さそうである。
- http://www.zabbix.jp/node/2710
- zabbix_server.c
115 int CONFIG_HOUSEKEEPER_FORKS = 1;
793 else if (server_num <= (server_count += CONFIG_HOUSEKEEPER_FORKS))
794 {
795 INIT_SERVER(ZBX_PROCESS_TYPE_HOUSEKEEPER, CONFIG_HOUSEKEEPER_FORKS);
796
797 main_housekeeper_loop();
798 }
- 見た感じこれでは、並列処理もなされないし負荷を下げるような閾値も無い様子。
従って、現在の所housekeeperのbusyを監視していても殆ど意味が無いという結論に。
なんかグダグダの結論で悲しいが、他に直さねばならないところは山ほどあるので、優先順位が低いとわかった時点でいったん保留。