No Data 및 Error 상태

No Data 및 Error 상태 (No Data and Error states)

Grafana Alerting은 알림 규칙을 평가할 때 자주 발생하는 시나리오를 처리하기 위해 No DataError 상태를 구현하며, 그 동작을 수정할 수 있어요. No Data 상태는 알림 규칙 쿼리가 성공했지만 데이터 포인트를 반환하지 않을 때, Error 상태는 알림 규칙이 쿼리 평가에 실패했을 때 발생해요. 두 상태 모두 Grafana 관리 알림 규칙에서만 지원됩니다.

출처: 문서

본문

Grafana Alerting은 알림 규칙 평가 시 자주 발생하는 시나리오를 처리하기 위해 No DataError 상태를 구현하며 그 동작을 수정할 수 있습니다.

  • No Data 상태: 알림 규칙 쿼리가 성공적으로 실행되었지만 데이터 포인트를 전혀 반환하지 않을 때 발생
  • Error 상태: 알림 규칙이 쿼리 평가에 실패했을 때 발생

참고: No Data와 Error 상태는 Grafana 관리 알림 규칙에서만 지원됩니다.

팁: Error, No Data, stale 알림 시나리오의 일반적인 예시와 실무 가이드는 Handle connectivity errorsHandle missing data 가이드를 참고하세요.

Error 상태

알림 규칙이 쿼리를 성공적으로 평가하지 못하면 Error 상태가 트리거됩니다. 이는 평가 타임아웃(기본 30s) 또는 데이터 소스 쿼리 시 반복 실패(기본 3)로 인해 발생할 수 있습니다. evaluation_timeoutmax_attempts 옵션이 이 설정을 제어합니다.

Error 상태는 pending period를 따릅니다: 인스턴스는 Normal → Pending → Error로 전환됩니다. pending period를 0으로 설정하면 Pending 상태를 건너뛰고 즉시 Error가 됩니다.

Error 상태로 들어가면 기본적으로 Grafana는 새로운 DatasourceError 알림을 트리거합니다.

No Data 상태

알림 규칙 쿼리가 성공했지만 데이터 포인트를 전혀 반환하지 않으면 No Data 상태가 발생합니다. No Data 상태도 pending period를 따릅니다: Normal → Pending → No Data. pending period를 0으로 설정하면 즉시 No Data가 됩니다.

No Data 상태로 들어가면 기본적으로 Grafana는 DatasourceNoData 알림을 트리거합니다.

No Data / Error 상태 수정

Configure no data and error handling에서 평가가 데이터를 반환하지 않거나 모든 값이 null일 때의 동작을 구성할 수 있습니다.

  • Set No Data state (기본): pending period가 0이면 즉시 No Data, 아니면 Pending 후 No Data. No Data 상태 진입 시 DatasourceNoData 알림 인스턴스 생성(규칙 이름, UID, 데이터 소스 UID 라벨 포함).
  • Set Alerting state: pending period가 0이면 즉시 Alerting, 아니면 Pending 후 Alerting.
  • Set Normal state: 즉시 Normal로 전환.
  • Keep last state: 현재 상태를 유지.

평가가 오류·타임아웃을 반환할 때도 동일하게 구성할 수 있습니다.

  • Set Error state (기본): pending period가 0이면 즉시 Error, 아니면 Pending 후 Error. Error 진입 시 DatasourceError 인스턴스 생성.
  • Set Alerting state / Set Normal state / Keep last state

No Data 또는 Error 동작을 Alerting·Normal로 설정하면 Grafana는 알림 Values 아래 필드 집합을 안정적으로 유지하려고 시도합니다. 쿼리가 데이터·오류를 반환하지 않으면 최신 알려진 필드 집합을 재사용하되 측정값 대신 -1을 사용합니다.

Keep last state

일시적인 데이터 소스 문제를 완화해 알림이 의도치 않게 fire, resolve, re-fire되는 것을 방지합니다. 다만 엄격한 모니터링이 중요한 상황에서는 "Keep Last State"만으로는 부적절할 수 있습니다. 장기간 데이터 소스 중단 문제를 감지하도록 대체 방안이나 추가 알림 규칙을 고려하세요.

No Data / Error 알림

평가 결과가 No Data 또는 Error 상태가 되면 Grafana Alerting은 다음 추가 라벨로 새 알림 인스턴스를 생성합니다.

  • alertname: 상태에 따라 DatasourceNoData 또는 DatasourceError
  • datasource_uid: 상태를 유발한 데이터 소스의 UID
  • rulename: 알림을 유발한 알림 규칙의 이름

DatasourceNoDataDatasourceError 인스턴스는 원래 인스턴스와 독립적입니다. 라벨이 다르므로 원래 알림에 적용된 침묵·음소거 타이밍·알림 정책이 적용되지 않을 수 있습니다. 연락 지점에 직접 알림을 보내도록 구성된 규칙이라면 두 알림도 그 연락 지점으로 전송됩니다.

No Data / Error 알림 줄이기

  • Keep last state 옵션 사용.
  • No Data 알림의 경우 쿼리 시간 범위를 확장. 단 시간 범위가 너무 크면 성능에 영향과 타임아웃 오류가 발생할 수 있으므로, Error 상태를 줄이려면 시간 범위를 줄여 매 평가마다 적은 데이터를 요청.
  • pending period 증가. 일시적 문제의 DatasourceNoData·DatasourceError 알림을 억제.
  • alertname=DatasourceError로 모든 관련 알림을 처리하는 알림 정책 정의, datasource_uid 라벨로 같은 데이터 소스 오류 필터·그룹화.
  • evaluation timeout(기본 30s) 또는 max_attempts 변경. 모든 알림 규칙 성능에 영향을 주고 타임아웃이 너무 길면 평가 누락이 생길 수 있어 최후 수단이어야 함. Grafana Cloud는 Cloud Portal에서 지원 티켓을 엽니다.

grafana_state_reason (트러블슈팅)

때로 인스턴스 상태가 명확하지 않을 수 있습니다. 예를 들어 no data 처리가 No Data 이외 상태로 전환되거나, error 처리가 Error 이외 상태로 전환되거나, 규칙이 삭제·일시 중지·업데이트될 때, Alerting 상태의 stale 인스턴스가 시리즈가 사라지면 Normal로 전환될 때입니다.

grafana_state_reason 주석이 이 경우 포함되어 현재 상태로 전환된 이유를 설명합니다.

  • no data/error 처리가 Normal로 전환되면 grafana_state_reason 값은 각각 No Data 또는 Error.
  • 규칙 삭제·일시 중지 시 Paused 또는 RuleDeleted, 일부 업데이트 시 Updated.
  • Normal 상태의 stale 인스턴스는 MissingSeries 값 포함.

더 알아보기 (Learn more)