2017年3月22日水曜日

ZabbixのHousekeeperについて

Housekeeperとは、Zabbixにてアイテムが収集したデータをいつまで保存するかを決めてそれ以上古くなったデータを削除するプロセスを言います。
この説明はzabbix 3.0を基準にします。

1.アイテムの保存期間設定

アイテムことに設定ができます。


















赤い丸のところにヒストリ保存期間とトレンド保存期間があります。
各アイテムことに保存期間を設定することができます。

2.データ保存期間の一括更新

データの保存期間を一括で管理した場合は
管理 → 一般設定 → 右上のデータの保存期間を選択します。
















データの削除処理を有効のところにチェックを入れると
ZabbixのHousekeeperが動作することになります。
ここには見えないですが上のページの下の部分を見るとヒストリのところとトレンドのところがあります。
アイテムのヒストリ(またはトレンド)の保存期間を上書きをチェックすると各アイテムで書いた保存期間が上書きされます。一括更新にはよいと思います。

保存期間を急に短くしても、データの量は急激にはならないです。
その理由はZabbixの処理がDBに負荷をかけないよう徐々に削除するからです。
計算式は
rule->min_clock = MIN(keep_from, rule->min_clock +
HK_MAX_DELETE_PERIODS * CONFIG_HOUSEKEEPING_FREQUENCY * SEC_PER_HOUR);
です。

計算式の解説:
zabbix_server.confファイルにあるHousekeepingFrequencyがあります。上の式CONFIG_HOUSEKEEPING_FREQUENCY を意味します。
HousekeepingFrequencyはHousekeeperのサイクル周期です。単位は時間になります。
HousekeepingFrequencyが1のことは1時間に1回の作業です。2の場合は2時間に1回の作業です。
HK_MAX_DELETE_PERIODS は4です。
SEC_PER_HOURは1です。
min_clockは削除対象になるデータ中に一番古いものです。
keep_fromはWEBページにて設定した保存期間の数字になります。

例)今まで保存期間30日のものを20日に変更した場合どうなるか?HousekeepingFrequency=1にする。

解説:この計算はunix timeになります。現在が一番高い数字になります。
結局20日までくるために、一番古いデータの日付(30日前)+(HousekeepingFrequency*4))時間にして削除しますので、10日分を削除するために60時間かかることになります。
20日より古いデータがなくなるとその日からは20日が基準になり1時間分のデータが削除されます。

3.手動作成

データの削除処理を有効のチェックを外します。
または、HousekeepingFrequency=0セットします。
そうするとHousekeeperは自動削除は停めることになります。
保存データを手動削除する対象になるテーブルは
history, history_str, history_log, history_uint, history_text, trends, trends_uint, service_alarms, auditlog, events, sessions になります。
定期的にこのテーブルを削除するとHousekeeperと同様な作業ができます。
作業内容は
http://naiggy.blogspot.com/2017/03/zabbix-housekeeper.html
ご参照ください。

定期的に削除するためにはJob Arrangerをお勧めします。
Job ArrangerのMysql用は
https://naiggy.blogspot.jp/2017/03/job-arranger-install.html

PostgreSQL用は
https://naiggy.blogspot.jp/2017/03/job-arranger-install-centos-7-postgresql.html
ご参照ください。

以上です。

0 件のコメント: