메트릭 기반 알림 설정하기

메트릭 기반 알림 설정하기 (Alerting based on metrics)

프로메테우스에서 메트릭 값을 기반으로 알림(alert)을 설정하는 방법을 배우는 튜토리얼이에요. 서비스가 비정상일 때 이를 감지하고, 규칙에 따라 경고를 발생시키는 전체 흐름을 다룹니다. 카운터·게이지 같은 메트릭을 쿼리로 평가해서 조건이 충족되면 알림을 띄우는 프로메테우스 경고 규칙(alerting rule)의 개념과 구성을 설명해요.

메트릭을 스크레이프해서 저장하고 그리는 것까지가 모니터링의 한 축이라면, 문제가 생겼을 때 사람에게 알리는 알림이 나머지 한 축이에요. 이 튜토리얼을 따라가면 PromQL 조건으로 경고 조건을 만들고, 규칙 파일을 프로메테우스에 연결하고, Alertmanager로 알림을 보내는 기초를 익힐 수 있어요.

출처: 문서

본문

이 튜토리얼에서는 메트릭 값을 기반으로 알림을 만드는 방법을 다룹니다. 예를 들어 어플리케이션이 처리한 요청 수가 특정 임계값을 넘었을 때 알림을 보내는 방식이에요.

메트릭 기반 알림의 기본 개념

프로메테우스에서 알림은 **경고 규칙(alerting rule)**으로 정의돼요. 경고 규칙은 PromQL 쿼리로 구성되며, 쿼리 결과가 조건을 만족하면 알림이 발화(firing)돼요.

예를 들어 HTTP 요청에 걸리는 시간이 길어지는 것을 감지하고 싶다면, 요청 지속 시간의 백분위수 같은 메트릭을 쿼리로 평가해 임계값과 비교할 수 있어요. 쿼리 결과가 조건을 충족하면 경고가 발생해요.

경고 규칙 예시

다음은 지연 시간이 높을 때 알림을 보내는 경고 규칙 예시예요:

groups:
- name: example
  rules:
  - alert: HighRequestLatency
    expr: job:request_latency_seconds:mean5m{job="myjob"} > 0.5
    for: 10m
    labels:
      severity: page
    annotations:
      summary: High request latency

각 항목을 살펴볼게요:

  • alert: 알림의 이름
  • expr: 경고를 유발하는 PromQL 쿼리. 이 값이 참이면 알림이 발화돼요
  • for: 이 조건이 유지되어야 하는 기간. 지정한 시간 동안 지속적으로 조건이 참이어야 알림이 발화되어, 일시적인 변동으로 알림이 울리는 것을 방지해요
  • labels: 알림에 첨부되는 레이블
  • annotations: 알림과 함께 표시되는 정보(요약, 설명 등)

규칙 파일 연결

정의한 규칙을 프로메테우스가 알도록 rule_files 구성으로 규칙 파일을 지정해야 해요:

global:
  scrape_interval: 15s

rule_files:
  - "alerts.yml"

프로메테우스를 다시 로드하거나 재시작하면 규칙이 적용돼요. 발화된 알림은 프로메테우스 웹 UI의 "Alerts" 메뉴에서 확인할 수 있어요.

Alertmanager로 알림 보내기

알림이 발화되면 프로메테우스는 그것을 Alertmanager로 보내 수신자에게 전달합니다. 프로메테우스 구성에서 alerting 섹션으로 Alertmanager를 지정해요:

alerting:
  alertmanagers:
  - static_configs:
    - targets:
      - "localhost:9093"

Alertmanager는 발화된 알림을 받아 라우팅 규칙에 따라 이메일, 슬랙, 페이지 등 원하는 방식으로 전달해요. 이렇게 하면 메트릭의 이상 상태를 실제 담당자에게 알릴 수 있어요.

기록 규칙과의 결합

복잡한 계산은 **기록 규칙(recording rule)**으로 미리 계산해 놓고, 경고 규칙에서는 그 결과를 참조하는 것이 좋아요. 이렇게 하면 매 쿼리마다 무거운 계산을 반복하지 않고, 경고 조건도 깔끔하게 유지할 수 있어요:

groups:
- name: example
  rules:
  - record: job:request_latency_seconds:mean5m
    expr: avg(rate(request_latency_seconds_bucket[5m])) by (job)

이 튜토리얼에서는 메트릭 기반 알림의 개념과 경고 규칙, 규칙 파일 연결, Alertmanager 연동 방법을 살펴봤어요.

더 알아보기 (Learn more)