계산된 아이템
개요
계산된 아이템을 사용하면 기존 아이템들의 값을 기반으로 계산을 만들 수 있습니다. 예를 들어 어떤 아이템 값의 시간별 평균을 계산하거나 아이템 그룹의 총합을 계산하고 싶을 수 있습니다. 계산된 아이템은 바로 이런 용도를 위한 것입니다.
계산에는 다음 두 가지를 모두 사용할 수 있습니다:
- 개별 아이템의 단일 값
- 집계를 위해 여러 아이템을 선택하는 복잡한 필터 (자세한 내용은 집계 계산 참조)
계산된 아이템은 가상 데이터 소스를 만드는 방법입니다. 모든 계산은 Zabbix server에서만 수행됩니다. 값은 사용된 산술 표현식에 따라 주기적으로 계산됩니다.
결과 데이터는 다른 아이템과 마찬가지로 Zabbix 데이터베이스에 저장됩니다. 히스토리와 트렌드 값이 모두 저장되며 그래프도 생성할 수 있습니다.
계산 결과가 실수 값이고 계산된 아이템의 정보 유형이 Numeric (unsigned)인 경우, 값은 정수로 잘립니다.
또한 캐시에 최근 데이터가 없고 함수에 조회 기간이 정의되어 있지 않으면, Zabbix는 기본적으로 최대 일주일 전까지 거슬러 올라가 데이터베이스에서 히스토리 값을 조회합니다.
계산된 아이템은 트리거 표현식과 동일한 문법을 사용합니다. 계산된 아이템에서는 문자열과의 비교가 허용됩니다. 계산된 아이템은 다른 아이템 유형과 마찬가지로 매크로나 다른 엔티티에서 참조할 수 있습니다.
계산된 아이템을 사용하려면 아이템 유형으로 Calculated를 선택하세요.
설정 가능한 필드
키는 (호스트별) 고유한 아이템 식별자입니다. 지원되는 기호를 사용해 어떤 키 이름이든 만들 수 있습니다.
계산 정의는 Formula 필드에 입력해야 합니다. 수식과 키 사이에는 아무런 연관이 없습니다. 키 파라미터는 수식에서 어떤 식으로도 사용되지 않습니다.
간단한 수식의 문법은 다음과 같습니다:
function(/host/key,<parameter1>,<parameter2>,...)
각 항목의 의미는 다음과 같습니다:
| function | 지원되는 함수 중 하나: last, min, max, avg, count 등 |
| host | 계산에 사용되는 아이템의 호스트입니다. 현재 호스트는 생략할 수 있습니다(즉, function(//key,parameter,...)와 같은 형태). |
| key | 계산에 사용되는 아이템의 키입니다. binary 데이터 유형의 값을 반환하는 아이템은 지원되지 않습니다. |
| parameter(s) | 필요한 경우 함수의 파라미터입니다. 시간 접미사와 메모리 크기 접미사가 지원됩니다. |
수식 내의 사용자 매크로는 함수 파라미터, 아이템 필터 파라미터 또는 상수를 참조하는 데 사용될 경우 확장됩니다. 함수, 호스트 이름, 아이템 키, 아이템 키 파라미터 또는 연산자를 참조하는 경우에는 사용자 매크로가 확장되지 않습니다.
더 복잡한 수식은 함수, 연산자, 괄호의 조합을 사용할 수 있습니다. 트리거 표현식에서 지원되는 모든 함수와 연산자를 사용할 수 있습니다. 논리와 연산자 우선순위는 완전히 동일합니다.
트리거 표현식과 달리, Zabbix는 계산된 아이템을 새 값을 수신할 때가 아니라 아이템 업데이트 간격에 따라 처리합니다.
계산된 아이템 수식에서 히스토리 함수가 참조하는 모든 아이템은 존재해야 하며 데이터를 수집하고 있어야 합니다. 또한 참조된 아이템의 아이템 키를 변경하면 해당 키를 사용하는 모든 수식을 수동으로 업데이트해야 합니다.
다음과 같은 여러 경우에 계산된 아이템이 지원되지 않는 상태가 될 수 있습니다:
- 참조된 아이템이
- 발견되지 않는 경우
- 비활성화된 경우
- 비활성화된 호스트에 속한 경우
- 지원되지 않는 경우(nodata() 함수 및 알 수 없는 값을 다루는 연산자는 예외)
- 함수를 계산할 데이터가 없는 경우
- 0으로 나누는 경우
- 잘못된 문법을 사용한 경우
사용 예시
예시 1
'/'의 여유 디스크 공간 비율 계산.
last 함수 사용:
100*last(//vfs.fs.size[/,free])/last(//vfs.fs.size[/,total])
Zabbix는 여유 디스크 공간과 전체 디스크 공간의 최신 값을 가져와 주어진 수식에 따라 비율을 계산합니다.
예시 2
Zabbix가 처리한 값 개수의 10분 평균 계산.
avg 함수 사용:
avg(/Zabbix Server/zabbix[wcache,values],10m)
긴 시간 범위를 사용하는 계산된 아이템을 광범위하게 사용하면 Zabbix server의 성능에 영향을 줄 수 있다는 점에 유의하세요.
예시 3
eth0의 총 대역폭 계산.
두 함수의 합:
last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes])
예시 4
수신 트래픽 비율 계산.
더 복잡한 표현식:
100*last(//net.if.in[eth0,bytes])/(last(//net.if.in[eth0,bytes])+last(//net.if.out[eth0,bytes]))
참고: 집계 계산 예시