2017年3月23日木曜日

Zabbix의 Housekeeper에 대해서

Housekeeper라함은, Zabbix의 아이템에서 수집한 데이터를 일정 기간만큼 저장하다가 기간이 지나면 데이터를 삭제해야 합니다. 이 기능을 하는 것이 Housekeeper입니다.
본 설명은 Zabbix 3.0을 기준으로 하고 있습니다.

1. 아이템설정에 있는 보존 기간

보존기간은 아이템마다 설정하는 것이 가능합니다.




















빨간 부분이 히스토리와 트랜드를 보존하는 기간을 설정하는 곳입니다.
각 아이템마다 설정하는 곳이 있어 중요도에 따라 기간을 다르게 설정합니다.

2. 데이터 이괄 보존 기간 설정

데이터의 보존 기간을 이괄적으로 관리합니다.
관리 → 일반 → 오른쪽 위에 있는 데이터 보존기간을 선택합니다.
데이터 삭제처리를 활성화에 체크를 하면, Zabbix의 Housekeeper가 실행됩니다.
위의 페이지에서는 보이지 않습니다만, 밑에 부분에 가면 이력과 트렌드가 있습니다.
이력은 아이템의 히스토리를 이야기하는 것입니다.
이력 또는 트랜드의 보존기간을 덮어 쓰기를 체크하면 각 아이템에 써있는 보존기간을 무시하고 위의 보존 기간을 사용하게 됩니다.

보존기간을 기존의 기간보다 짧게 변경하여도, 데이터의 양은 급격하게 변경되지 않습니다.
그이유는, Zabbix의 Housekeeper기능이 갑자기 많은 양의 데이터를 지우게 되면 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시간 주기로 작업하는 것이고, 2라는 뜻은 2시간 주기로 작업하라는 의미 입니다.
HK_MAX_DELETE_PERIODS은 4로 고정값입니다.
SEC_PER_HOUR은 1을 의미 합니다.
min_clock은 가장 오래된 데이터의 작성 일시 입니다.
keep_from은 WEB화면에서 입력한 데이터 보존 기간입니다.

예) 지금까지 데이터 보존 기간이 30일이였는데, 이것을 20일로 변경할 경우 어떻게 되나?
HousekeepingFrequency=1로 설정

해설:이 계산식은 unit time을 이용합니다. unix time은 지금이 제일로 많은 시간이라는 것을 의미합니다.
결국, 보존 기간을 20일로 변경하여도, 가장 오래된 데이터는 30일전의 것이므로
가장 오래된 데이터(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
입니다.
정기적으로 위의 테이블들을 삭제하면 Housekeepr와 같은 작업이 되는 것입니다.
작업 내용은
을 참조해 주시길 바라겠습니다.

정기적으로 삭제하기 위해서 Job Arranger를 추천 드립니다.
개요는

인스톨 방법은
Mysql
참조 바랍니다.

0 件のコメント: