Prometheus 점검

Zabbix v7.4번역일: 2026-09-09원본 보기

개요

Zabbix는 Prometheus line format으로 노출되는 메트릭을 조회할 수 있습니다.

Prometheus 데이터 수집을 시작하려면 두 단계가 필요합니다:

  • 적절한 데이터 엔드포인트를 가리키는 HTTP 마스터 아이템, 예: https://<prometheus host>/metrics
  • 마스터 아이템이 수집한 메트릭에서 필요한 데이터를 조회하기 위해 Prometheus 전처리 옵션을 사용하는 종속 아이템

Prometheus 데이터 전처리 옵션은 두 가지가 있습니다:

  • Prometheus pattern - 일반 아이템에서 Prometheus 데이터를 조회할 때 사용
  • Prometheus to JSON - 일반 아이템과 자동 등록(low-level discovery)에 사용. 이 경우 조회된 Prometheus 데이터는 JSON 형식으로 반환됩니다.
일괄 처리

종속 아이템에 대해 일괄 처리가 지원됩니다. 캐싱과 인덱싱을 활성화하려면 Prometheus pattern 전처리가 첫 번째 전처리 단계여야 합니다. Prometheus pattern이 첫 번째 전처리 단계인 경우, 파싱된 Prometheus 데이터는 Prometheus pattern 전처리 단계에서 첫 번째로 나오는 <label>==<value> 조건으로 캐싱 및 인덱싱됩니다. 이 캐시는 같은 배치 내 다른 종속 아이템을 처리할 때 재사용됩니다. 최적의 성능을 위해서는 첫 번째 label로 값의 종류가 가장 많은 것을 사용하는 것이 좋습니다.

첫 번째 단계 이전에 수행해야 할 다른 전처리가 있다면, 마스터 아이템으로 옮기거나, 해당 종속 아이템들의 마스터 아이템으로 사용될 새 종속 아이템으로 옮겨야 합니다.

설정

HTTP 마스터 아이템이 설정되어 있다면, Prometheus 전처리 단계를 사용하는 종속 아이템을 생성해야 합니다:

  • 설정 폼에 일반적인 종속 아이템 파라미터를 입력합니다
  • Preprocessing 탭으로 이동합니다
  • Prometheus 전처리 옵션(Prometheus pattern 또는 Prometheus to JSON)을 선택합니다

다음 파라미터들은 Prometheus pattern 전처리 옵션에 특화된 것입니다:

파라미터 설명 예시
Pattern 필요한 데이터 패턴을 정의하려면 Prometheus 쿼리 언어와 유사한 쿼리 언어를 사용할 수 있습니다(비교 표 참고), 예:
<metric name> - 메트릭 이름으로 선택
{__name__="<metric name>"} - 메트릭 이름으로 선택
{__name__=~"<regex>"} - 정규식과 일치하는 메트릭 이름으로 선택
{<label name>="<label value>",...} - label 이름으로 선택
{<label name>=~"<regex>",...} - 정규식과 일치하는 label 이름으로 선택
{__name__=~".*"}==<value> - 메트릭 값으로 선택
또는 위 항목들의 조합:
<metric name>{<label1 name>="<label1 value>",<label2 name>=~"<regex>",...}==<value>

label 값은 UTF-8 문자의 어떤 시퀀스든 될 수 있지만, 백슬래시, 큰따옴표, 줄바꿈 문자는 각각 \\, \", \n으로 이스케이프되어야 합니다; 그 외 문자는 이스케이프하지 않습니다.
wmi_os_physical_memory_free_bytes
cpu_usage_system{cpu="cpu-total"}
cpu_usage_system{cpu=~".*"}
cpu_usage_system{cpu="cpu-total",host=~".*"}
wmi_service_state{name="dhcp"}==1
wmi_os_timezone{timezone=~".*"}==1
Result processing 값을 반환할지, label을 반환할지, 아니면 적절한 함수를 적용할지 지정합니다(패턴이 여러 줄과 일치하여 결과를 집계해야 하는 경우):
value - 메트릭 값 반환(여러 줄이 일치하면 오류)
label - Label 필드에 지정된 label의 값 반환(여러 메트릭이 일치하면 오류)
sum - 값들의 합계 반환
min - 최솟값 반환
max - 최댓값 반환
avg - 평균값 반환
count - 값의 개수 반환
이 필드는 Prometheus pattern 옵션에서만 사용할 수 있습니다.
아래 파라미터 사용 예시도 참고하세요.
Output label 이름을 정의합니다(선택 사항). 이 경우 해당 label 이름에 대응하는 값이 반환됩니다.
이 필드는 Prometheus pattern 옵션에서 Result processing 필드에 'Label'이 선택된 경우에만 사용할 수 있습니다.

파라미터 사용 예시

  1. 가장 일반적인 사용 사례는 value를 반환하는 것입니다. 다음에서 /var/db의 값을 반환하려면:

node_disk_usage_bytes{path="/var/cache"} 2.1766144e+09
node_disk_usage_bytes{path="/var/db"} 20480
node_disk_usage_bytes{path="/var/dpkg"} 8192
node_disk_usage_bytes{path="/var/empty"} 4096

다음 파라미터를 사용합니다:

  • Pattern - node_disk_usage_bytes{path="/var/db"}
  • Result processing - 'value' 선택
  1. 모든 node_disk_usage_bytes 파라미터의 평균 값에 관심이 있을 수도 있습니다:
  • Pattern - node_disk_usage_bytes
  • Result processing - 'avg' 선택
  1. Prometheus는 숫자 데이터만 지원하지만, 관련된 텍스트 설명도 함께 반환할 수 있게 해주는 우회 방법을 사용하는 것이 일반적입니다. 이는 필터를 사용하고 label을 지정하여 구현할 수 있습니다. 예를 들어 다음에서 'color' label의 값을 반환하려면

elasticsearch_cluster_health_status{cluster="elasticsearch",color="green"} 1
elasticsearch_cluster_health_status{cluster="elasticsearch",color="red"} 0
elasticsearch_cluster_health_status{cluster="elasticsearch",color="yellow"} 0

다음 파라미터를 사용합니다:

  • Pattern - elasticsearch_cluster_health_status {cluster="elasticsearch"} == 1
  • Result processing - 'label' 선택
  • Label - 'color' 지정

필터(숫자 값 '1' 기준)가 해당하는 행을 찾아 일치시키고, label은 health status 설명(현재는 'green'이지만 상황에 따라 'red' 또는 'yellow'일 수도 있음)을 반환합니다.

Prometheus to JSON

Prometheus에서 가져온 데이터는 자동 등록(low-level discovery)에 사용할 수 있습니다. 이 경우 JSON 형식의 데이터가 필요하며, Prometheus to JSON 전처리 옵션이 정확히 그 데이터를 반환합니다.

자세한 내용은 Prometheus 데이터를 이용한 자동 등록을 참고하세요.

쿼리 언어 비교

다음 표는 PromQL과 Zabbix Prometheus 전처리 쿼리 언어 간의 차이점과 유사점을 나열합니다.

PromQL instant vector selector < Zabbix Prometheus 전처리
차이점 < <
쿼리 대상 Prometheus 서버 Prometheus exposition format의 일반 텍스트
반환값 Instant vector 메트릭 또는 label 값(Prometheus pattern)
JSON에서 단일 값에 대한 메트릭 배열(Prometheus to JSON)
Label matching 연산자 =, !=, =~, !~ =, !=, =~, !~
label 또는 메트릭 이름 매칭에 사용되는 정규식 RE2 PCRE
비교 연산자 목록 참고 값 필터링에는 ==(equal)만 지원됩니다
유사점 < <
문자열과 동일한 메트릭 이름으로 선택 <metric name> or {__name__="<metric name>"} <metric name> or {__name__="<metric name>"}
정규식과 일치하는 메트릭 이름으로 선택 {__name__=~"<regex>"} {__name__=~"<regex>"}
문자열과 동일한 <label name> 값으로 선택
정규식과 일치하는 <label name> 값으로 선택
문자열과 동일한 값으로 선택 {__name__=~".*"} == <value> {__name__=~".*"} == <value>