Loki 알림
Loki 알림 (Loki alerting)
Loki 데이터 소스는 Grafana Alerting을 지원해요. LogQL 메트릭 쿼리가 임계값을 넘으면(예: 오류 로그 속도가 스파이크) Grafana가 알림을 주도록 로그에 알림을 걸 수 있어요. Loki는 두 종류의 알림 규칙(Grafana 관리 규칙, 데이터 소스 관리 규칙)과 함께 동작해요.
출처: 문서
본문
알림에 지원되는 쿼리
알림 규칙은 Grafana가 임계값에 대해 평가할 수 있는 숫자 데이터를 반환하는 쿼리가 필요해요. Loki 로그 쿼리를 rate나 count_over_time 같은 LogQL 메트릭 함수로 감싸 숫자 시계열을 만들어요.
참고: 알림에는 일반 로그 쿼리가 아니라 메트릭 쿼리를 사용하세요. 로그 쿼리는 로그 줄을 반환하며, Grafana는 이를 임계값에 대해 평가할 수 없어요.
알림에 흔한 시작점 쿼리들:
초당 오류 줄 속도:
sum(rate({app="my-app"} |= `error` [5m]))
엔드포인트/서비스별 알림을 위해 상태 코드별 오류율 분해:
sum by (status) (rate({app="nginx"} | logfmt | status=~`5..` [5m]))
지연 시간 알림을 위한 느린 요청 개수:
sum(count_over_time({app="my-app"} | logfmt | duration > 1s [5m]))
로그를 멈춘 서비스 감지 — 개수가 0으로 떨어지면 알림:
sum(count_over_time({app="my-app"} [10m]))
Grafana 관리 알림 규칙 만들기
Loki 데이터로 Grafana 관리 알림 규칙을 만들려면 알림 페이지에서 규칙을 만들고, 쿼리로 Loki 데이터 소스를 선택한 뒤 LogQL 메트릭 쿼리를 입력하고, 임계값·하한 기간·평가 간격을 설정하면 돼요.
예: 오류 로그 속도 알림
error가 포함된 로그 줄의 속도가 임계값을 초과하면 발화하는 예시: sum(rate({app="my-app"} |= \error` [5m]))` 쿼리를 쓰고, Reduce 표현식(예: Last)으로 시계열을 단일 값으로 줄인 뒤, 임계값을 설정해요.
데이터 소스 관리 알림 규칙 관리
Loki 데이터 소스에서 Manage alert rules in Alerting UI를 켜면 Loki ruler가 저장·평가하는 알림 및 recording rules를 만들고 편집할 수 있어요. 이 규칙은 Grafana 관리 규칙 옆 Grafana Alerting UI에, Loki 데이터 소스 아래 그룹으로 나타나요. Loki 데이터 소스 구성은 Alertmanager 라우팅을 포함하지 않으므로, 생성된 알림을 라우팅하려면 별도의 Alertmanager 데이터 소스를 추가하세요.
모범 사례
- 알림 전 쿼리 테스트: 알림을 만들기 전에 쿼리가 숫자 데이터를 반환하는지 확인하세요.
- 시계열을 단일 값으로 줄이기: Grafana 관리 규칙은 단일 숫자를 임계값에 대해 평가해요. 레인지 쿼리는 많은 포인트를 가진 시계열을 반환하므로 규칙이 직접 평가할 수 없어요. 쿼리 Type을
instant로 설정하거나, 쿼리와 Threshold 표현식 사이에 Last나 Mean 같은 Reduce 표현식을 추가하세요. 이것 없이는 규칙이 잘못 평가될 수 있어요. - 하한 기간(pending period) 설정으로 오탐 방지: 짧은 네트워크 끊김이나 일시적 오류 스파이크 같은 일시적 조건이 단일 평가에서 임계값을 넘을 수 있어요. 하한 기간을 설정해 조건이 지속된 동안만 규칙이 발화하게 하세요. 몇 번의 평가 간격에 해당하는 하한 기간은 짧은 수명 조건의 오탐을 줄여줘요.
- 데이터 없음과 0 결과 처리: LogQL 메트릭 쿼리는 일치하는 로그 줄이 없으면 값
0대신 시리즈 없음을 반환해요. Grafana는 시리즈를 받지 못한 규칙을 Normal이 아니라 No Data로 평가하므로, 알림이 해소되지 않고 No Data 상태에 들어갈 수 있어요. 이를 피하려면 규칙 평가에서 No Data 처리 방식을 구성하세요.참고: 알림 규칙을 편집·저장하면 상태가 Normal로 리셋돼요. 조건이 여전히 충족되면 다음 평가에서 Pending 또는 Alerting으로 다시 들어가요. 이는 표준 Grafana Alerting 동작이며 Loki 데이터 소스에만 국한된 것이 아니에요.
알림 문제 해결
- 알림이 발화되지 않음: 쿼리가 숫자 데이터를 반환하는지, 시계열을 단일 값으로 줄였는지 확인하세요.
- 알림이 예기치 않게 No Data: 시리즈 없음 처리와 No Data 설정을 확인하세요.
- 짧은 스파이크에 알림 발화: 하한 기간을 늘리세요.
- 데이터 소스 관리 규칙이 나타나지 않음: Manage alert rules in Alerting UI 토글을 확인하세요.