tail -f /dev/null

If you haven't had any obstacles lately, you're not challenging. be the worst.

Zabbix housekeeper processes more than 75% busyへの対処

環境

  • Zabbix 4.0.1 (Cent OSコンテナ上に構築)
  • コンテナオーケストレーション: Amazon Elastic Container Service (EC2 type)

概要

  • Zabbix GUI上から、1ホストにつき5000程アイテムを所有するホストを複数削除した後、表題のエラーが発生。
    • 計40000アイテム程、housekeepingの保持期間は365d。
  • housekeeper processは、ヒストリデータから保存期間が過ぎて不必要となったデータを削除するprocessである。
    • 1時間と数分毎に、一定量のデータ削除を行う。
      • housekeeper [deleted 390378 hist/trends, 24000 items/triggers, 96 events, 48 problems, 0 sessions, 0 alarms, 0 audit items in 130 sec, idle for 1 hour(s)]
    • 徐々に削除するアイテム (もしくはトリガー、障害、セッション、アラーム、監査ログ) の量は減っていく。
      • 例: 1002786 hist/trends, 13854435 items (1回) > 516808 hist/trends, 2760000 items (8回) > 427269 hist/trends, 1660000 items (13回) ... というように減少。
  • single processである。
  • HousekeepingFrequency に指定する値(hour)分のデータを削除する。
    • 周期*4以内のデータを古い順に削除。
  • 今回のようにホストに紐付いていた大量のヒストリを削除する場合、ひたすらにprocessがフル稼働しbusy率100%となる。

f:id:hrt0kmt:20190429235522p:plain

※Zabbix busy poller processの値も平行して上がるだろう。

対応

  • 100%で張り付いたとしても大きく他処理に影響が出ることは無いと思われる為、何もする必要はなさそう。
    • Queueへの滞留が多くなり若干監視遅延が発生する可能性がある。
  • 2時間半ほどで復帰した。

対策

対応案としては以下が考えられそう。

  • 不要なアイテム/LLDの削除、無効化
  • processの並列数を上げるのであれば start poller processes の値を上げる(デフォルト5)。
    • あまり上げるとZabbix Serverの負荷が増えプロセスが落ちる可能性も。
  • 当該コンテナへの割当CPU Unitを増やす。
  • アイテムの監視間隔を広げ、秒間負荷を減らす。

参考