PostgreSQL 데이터 소스 알림

PostgreSQL 데이터 소스 알림 (PostgreSQL alerting)

PostgreSQL 데이터 소스는 Grafana Alerting을 지원해요. PostgreSQL 데이터베이스에 대한 시계열 쿼리를 평가하는 알림 규칙을 만들고, 조건이 충족되면 알림을 보낼 수 있습니다. 이 문서는 지원되는 쿼리 형식, 제한 사항, 예시 쿼리, 그리고 모범 사례를 다룹니다.

출처: PostgreSQL alerting

본문

Grafana Cloud를 사용하면 자체 Grafana 인스턴스 설치·유지·확장을 피할 수 있어요. PostgreSQL 데이터 소스는 Grafana Alerting을 지원하며, PostgreSQL 데이터베이스에 대한 시계열 쿼리를 평가하는 알림 규칙을 만들고 조건이 충족되면 알림을 보낼 수 있어요.

시작하기 전에 (Before you begin)

지원되는 쿼리 형식 (Supported query format)

알림 규칙 조건에는 시계열(time series) 쿼리만 사용할 수 있어요.

  • 쿼리는 time이라는 이름의 열(네이티브 SQL date/time 또는 UNIX epoch)과 하나 이상의 숫자 값 열을 반환해야 해요.
  • 테이블 형식(Table) 쿼리는 알림 규칙 조건에서 지원되지 않아요.

시계열 쿼리 작성 방법은 PostgreSQL 쿼리 편집기의 시계열 쿼리 문서를 참고하세요.

제한 사항 (Limitations)

PostgreSQL을 Grafana Alerting과 함께 사용할 때 다음 제한 사항을 유의하세요.

  • 시계열 형식만: 알림 규칙은 쿼리 Format이 Time series로 설정되어야 해요. 테이블 형식 쿼리는 알림 조건으로 사용될 수 없어요.
  • 알림에 fill 모드 없음: $__timeGroupfill 파라미터(예: $__timeGroup(col, '5m', 0))는 알림 평가 중에 적용되지 않아요. 누락된 데이터 포인트는 공백(gap)으로 남아요.
  • 조건당 단일 쿼리: 각 알림 조건은 단일 쿼리를 평가해요. 여러 쿼리의 결과를 결합해야 한다면 알림 규칙에서 수학 표현식을 사용해요.
  • 템플릿 변수 미지원: 알림 쿼리는 대시보드 컨텍스트와 독립적으로 평가되므로 대시보드 템플릿 변수를 지원하지 않아요. 값을 하드코딩하거나 알림 규칙 라벨을 사용하세요.

알림 규칙 만들기 (Create an alert rule)

PostgreSQL을 사용하는 알림 규칙을 만들려면:

  1. 왼쪽 메뉴에서 Alerting으로 이동해 Alert rules를 선택해요.
  2. New alert rule을 클릭해요.
  3. 쿼리 섹션에서 PostgreSQL 데이터 소스를 선택해요.
  4. 쿼리 Format을 Time series로 설정해요.
  5. time 열과 하나 이상의 숫자 값을 반환하는 SQL 쿼리를 작성해요.
  6. 조건, 평가 그룹, 알림 설정을 구성해요.
  7. 규칙을 저장해요.

단계별 지침은 Grafana 관리 알림 규칙 만들기 문서를 참고하세요.

알림용 예시 쿼리 (Example queries for alerting)

임계값 알림 (Threshold alert):

다음 쿼리는 임계값 알림(예: 평균 값이 한도를 초과하면 알림)에 적합한 시계열을 반환해요.

SELECT
  $__timeGroupAlias("time_date_time", '5m'),
  avg("value_double") AS value
FROM test_data
WHERE $__timeFilter("time_date_time")
GROUP BY time
ORDER BY time

알림 규칙에서 Is above 또는 Is below 같은 조건 유형을 사용해 시리즈를 평가해요.

다차원 알림 (Multi-dimensional alert):

라벨 열의 각 값에 대해 별도의 알림 인스턴스를 만들려면 쿼리에 문자열 열을 포함해요. Grafana는 고유한 라벨 값마다 하나의 알림 인스턴스를 만들어 각 호스트, 서비스, 지역을 독립적으로 모니터링할 수 있어요.

SELECT
  $__timeGroupAlias("time_date_time", '5m'),
  avg("value_double") AS value,
  hostname
FROM test_data
WHERE $__timeFilter("time_date_time")
GROUP BY time, hostname
ORDER BY time

이 쿼리는 각 hostname에 대해 별도의 시계열을 생성해요. 알림 규칙은 각 시리즈에 대해 조건을 독립적으로 평가하므로 호스트별로 개별 알림을 받아요.

행 수 알림 (Alert on row count):

시간 창의 행 수가 임계값을 초과하면 알림을 보내려면(예: 오류 수):

SELECT
  $__timeGroupAlias("created_at", '5m'),
  count(*) AS error_count
FROM error_logs
WHERE $__timeFilter("created_at")
  AND severity = 'ERROR'
GROUP BY time
ORDER BY time

템플릿 주석과 라벨 (Template annotations and labels)

템플릿 주석과 라벨을 사용해 알림 알림과 라벨에 쿼리 결과나 메타데이터를 포함할 수 있어요.

모범 사례 (Best practices)

PostgreSQL을 알림에 사용할 때 다음 모범 사례를 따르세요.

  • 쿼리를 빠르게 유지: 알림 규칙은 스케줄(예: 1분마다)로 평가돼요. 값비싼 조인, 서브쿼리, 또는 인덱스 없는 큰 테이블 스캔을 피하세요. 시간 열과 WHERE 절에 사용되는 열에 인덱스를 추가해요.
  • $__timeFilter 사용: 항상 $__timeFilter 또는 $__unixEpochFilter 매크로를 포함해 데이터를 평가 창으로 제한해요. 없으면 매 평가마다 쿼리가 전체 테이블을 스캔해요.
  • NULL 값 처리: 데이터에 NULL 값이 있으면 Grafana는 이를 "no data"로 취급해요. 알림 규칙의 No data 동작을 기대에 맞게 구성해요(예: Alerting, No data, OK).
  • Explore에서 먼저 테스트: 알림 규칙에 사용하기 전에 Explore에서 쿼리가 예상 시계열을 반환하는지 확인해요. Format이 Time series이고 결과가 시간순으로 정렬되었는지 확인해요.
  • 현실적인 평가 간격 설정: 쿼리가 완료될 충분한 시간을 주는 평가 간격을 선택해요. 쿼리가 10초 걸리면 10초마다 평가하지 말고 여유를 두세요.

더 알아보기 (Learn more)