my syntax suger

i have an unbeknown dictionary. everything is up to me.

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%で張り付いたとしても他処理に影響が出ることは無いと思われる為、何もする必要はなさそう。
  • 2時間半ほどで復帰した。
  • processの並列数を上げるのであれば start poller processes の値を上げる(デフォルト5)。

対策

  • 不要なアイテム/LLDの削除、無効化
  • start poller processes の値を 5 -> 10 へ増加させる等、チューニング。

参考