PostgreSQL 데이터 소스 알림
PostgreSQL 데이터 소스 알림 (PostgreSQL alerting)
PostgreSQL 데이터 소스는 Grafana Alerting을 지원해요. PostgreSQL 데이터베이스에 대한 시계열 쿼리를 평가하는 알림 규칙을 만들고, 조건이 충족되면 알림을 보낼 수 있습니다. 이 문서는 지원되는 쿼리 형식, 제한 사항, 예시 쿼리, 그리고 모범 사례를 다룹니다.
본문
Grafana Cloud를 사용하면 자체 Grafana 인스턴스 설치·유지·확장을 피할 수 있어요. PostgreSQL 데이터 소스는 Grafana Alerting을 지원하며, PostgreSQL 데이터베이스에 대한 시계열 쿼리를 평가하는 알림 규칙을 만들고 조건이 충족되면 알림을 보낼 수 있어요.
시작하기 전에 (Before you begin)
- PostgreSQL 데이터 소스가 구성되어 있는지 확인해요.
- 알림 규칙과 Grafana 관리 알림 규칙 만들기에 익숙해져요.
지원되는 쿼리 형식 (Supported query format)
알림 규칙 조건에는 시계열(time series) 쿼리만 사용할 수 있어요.
- 쿼리는
time이라는 이름의 열(네이티브 SQL date/time 또는 UNIX epoch)과 하나 이상의 숫자 값 열을 반환해야 해요. - 테이블 형식(Table) 쿼리는 알림 규칙 조건에서 지원되지 않아요.
시계열 쿼리 작성 방법은 PostgreSQL 쿼리 편집기의 시계열 쿼리 문서를 참고하세요.
제한 사항 (Limitations)
PostgreSQL을 Grafana Alerting과 함께 사용할 때 다음 제한 사항을 유의하세요.
- 시계열 형식만: 알림 규칙은 쿼리 Format이 Time series로 설정되어야 해요. 테이블 형식 쿼리는 알림 조건으로 사용될 수 없어요.
- 알림에 fill 모드 없음:
$__timeGroup의fill파라미터(예:$__timeGroup(col, '5m', 0))는 알림 평가 중에 적용되지 않아요. 누락된 데이터 포인트는 공백(gap)으로 남아요. - 조건당 단일 쿼리: 각 알림 조건은 단일 쿼리를 평가해요. 여러 쿼리의 결과를 결합해야 한다면 알림 규칙에서 수학 표현식을 사용해요.
- 템플릿 변수 미지원: 알림 쿼리는 대시보드 컨텍스트와 독립적으로 평가되므로 대시보드 템플릿 변수를 지원하지 않아요. 값을 하드코딩하거나 알림 규칙 라벨을 사용하세요.
알림 규칙 만들기 (Create an alert rule)
PostgreSQL을 사용하는 알림 규칙을 만들려면:
- 왼쪽 메뉴에서 Alerting으로 이동해 Alert rules를 선택해요.
- New alert rule을 클릭해요.
- 쿼리 섹션에서 PostgreSQL 데이터 소스를 선택해요.
- 쿼리 Format을 Time series로 설정해요.
time열과 하나 이상의 숫자 값을 반환하는 SQL 쿼리를 작성해요.- 조건, 평가 그룹, 알림 설정을 구성해요.
- 규칙을 저장해요.
단계별 지침은 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초마다 평가하지 말고 여유를 두세요.