히스토리 및 트렌드
개요
히스토리와 트렌드는 Zabbix에서 수집된 데이터를 저장하는 두 가지 방식입니다.
히스토리는 수집된 모든 값을 보관하는 반면, 트렌드는 시간 단위로 평균화된 정보를 보관하므로 리소스를 훨씬 적게 사용합니다.
히스토리 보관
히스토리를 며칠 동안 보관할지 다음 위치에서 설정할 수 있습니다:
이보다 오래된 데이터는 하우스키퍼가 삭제합니다.
일반적으로 강력히 권장되는 방법은 히스토리를 가능한 한 짧은 기간만 보관하여 데이터베이스에 방대한 히스토리 값이 쌓여 과부하가 걸리지 않도록 하는 것입니다.
히스토리를 오래 보관하는 대신, 트렌드 데이터를 더 긴 기간 동안 보관할 수 있습니다. 예를 들어 히스토리는 14일, 트렌드는 5년 동안 보관할 수 있습니다.
히스토리 데이터와 트렌드 데이터가 각각 얼마나 많은 공간을 필요로 하는지는 데이터베이스 크기 산정 페이지를 참조하면 잘 파악할 수 있습니다.
히스토리를 짧게 보관하더라도 그래프에서는 여전히 오래된 데이터를 확인할 수 있습니다. 그래프는 오래된 데이터를 표시할 때 트렌드 값을 사용하기 때문입니다.
히스토리가 '0'으로 설정되면 해당 아이템은 종속 아이템과 인벤토리만 업데이트합니다. 트리거 평가는 히스토리 데이터에만 기반하므로 트리거 함수는 평가되지 않습니다.
히스토리를 보존하는 다른 방법으로 로더블 모듈의 히스토리 내보내기 기능을 사용하는 것을 고려해 보세요.
트렌드 보관
트렌드는 숫자 데이터 타입에 대해 매 시간마다 최솟값, 최댓값, 평균값 및 전체 값 개수를 저장하는 내장 히스토리 데이터 축소 메커니즘입니다.
트렌드를 며칠 동안 보관할지 다음 위치에서 설정할 수 있습니다:
- 아이템 속성 폼에서
- 아이템을 일괄 업데이트할 때
- 하우스키퍼 작업을 설정할 때
트렌드는 보통 히스토리보다 훨씬 오래 보관할 수 있습니다. 이보다 오래된 데이터는 하우스키퍼가 삭제합니다.
Zabbix 서버는 데이터가 유입되는 대로 런타임에 트렌드 캐시에 트렌드 데이터를 누적합니다. 서버는 다음 상황에서 각 아이템의 직전 1시간 트렌드를 데이터베이스(프론트엔드가 조회할 수 있는 곳)로 플러시합니다:
- 서버가 해당 아이템의 현재 시간대 첫 값을 수신할 때
- 현재 시간대가 5분 이하 남았는데 아직 해당 아이템의 현재 시간대 값이 없을 때
- 서버가 중지될 때
그래프에서 트렌드를 보려면 최소한 다음 시간의 시작(아이템이 자주 업데이트되는 경우)까지, 최대 다음 시간의 끝(아이템이 드물게 업데이트되는 경우)까지 기다려야 하며, 이는 최대 2시간입니다.
서버가 트렌드 캐시를 플러시할 때 해당 시간대의 트렌드가 이미 데이터베이스에 있으면(예: 서버가 시간대 중간에 재시작된 경우) 서버는 단순 insert 대신 update 구문을 사용해야 합니다. 따라서 규모가 큰 설치 환경에서 재시작이 필요하다면 트렌드 데이터 중복을 피하기 위해 한 시간대의 끝에 서버를 중지하고 다음 시간대의 시작에 기동하는 것이 바람직합니다.
히스토리 테이블은 트렌드 생성에 어떤 방식으로도 관여하지 않습니다.
트렌드가 '0'으로 설정되면 Zabbix 서버는 트렌드를 전혀 계산하거나 저장하지 않습니다.
트렌드는 원본 값과 동일한 데이터 타입으로 계산되어 저장됩니다. 그 결과 부호 없는(unsigned) 데이터 타입 값의 평균값 계산은 반올림되며, 값의 간격이 좁을수록 결과의 정밀도는 떨어집니다. 예를 들어 아이템의 값이 0과 1이면 평균값은 0.5가 아니라 0이 됩니다.
또한 서버를 재시작하면 현재 시간대의 부호 없는 데이터 타입 평균값 계산에서 정밀도가 손실될 수 있습니다.