본문으로 건너뛰기

[Loki] Ingester 타임아웃 반영하여 레이턴시 알림 임계값 1초에서 5초로 조정

PR 링크: grafana/loki#21370 상태: Merged | 변경: +3 / -3

들어가며

Loki의 LokiRequestLatency 알림은 쓰기 요청의 99번째 백분위 레이턴시가 임계값을 초과할 때 발생합니다. 이전에 distributor 타임아웃이 증가되었지만(PR #20471), 알림 임계값은 1초로 유지되어 실제 타임아웃이 발생하지 않는 상황에서도 알림이 트리거되는 거짓 경보가 발생하고 있었습니다.

핵심 코드 분석

Before: 1초 임계값

# prometheus-alerts.yaml
annotations:
  summary: "The 99th percentile is experiencing high latency (higher than 1 second)."
expr: |
  histogram_quantile(0.99,
    sum(rate(loki_request_duration_seconds_bucket[5m])) by (job, le, namespace, route)
  )
  > 1
for: 15m
labels:
  severity: critical

After: 5초 임계값

annotations:
  summary: "The 99th percentile is experiencing high latency (higher than 5 seconds)."
expr: |
  histogram_quantile(0.99,
    sum(rate(loki_request_duration_seconds_bucket[5m])) by (job, le, namespace, route)
  )
  > 5
for: 15m
labels:
  severity: critical

왜 이게 좋은가

1. 거짓 경보(False Positive) 제거

Ingester 타임아웃이 5초 이상으로 설정된 상태에서 1초 임계값은 정상 동작 범위에서도 알림을 발생시킵니다. 이는 운영팀의 알림 피로(alert fatigue)를 유발하고, 진짜 문제가 발생했을 때 대응 속도를 저하시킵니다.

2. 알림과 타임아웃의 정합성

알림 임계값은 실제 시스템의 타임아웃 설정과 일관되어야 합니다. 타임아웃이 5초인데 알림이 1초에 발생하면, 시스템이 정상적으로 재시도를 처리하는 중에도 불필요한 페이징이 발생합니다.

3. 운영 코드도 코드다

알림 규칙 변경은 애플리케이션 코드 변경만큼 중요합니다. 이 PR은 테스트 데이터(test.yaml)도 함께 업데이트하여, 알림 규칙의 올바른 동작을 검증하는 테스트가 새 임계값을 반영하도록 했습니다.

참고 자료

댓글

관련 포스트

PR Analysis 의 다른글