LabHub

PCA — 프로메테우스 인증 어소시에이트 · 알림과 대시보딩 · 실습

라우팅 트리와 번 레이트 알림

LabHub 에서 이어서 보기

목표

Alertmanager 설정을 라우팅 트리부터 억제 규칙까지 직접 쓰고, SLO 에서 역산한 번 레이트 알림 두 개를 만들고, 런북 누락을 빌드에서 막는 게이트를 작성합니다.

왜 중요한가

알림의 성공 기준은 "문제를 감지했는가"가 아니라 "사람이 지금 무언가를 해야 하는가" 입니다. 이 기준을 통과하지 못하는 알림은 정확해도 해롭습니다. 정확한 알림 400개가 온콜의 반응 속도를 무너뜨리면 정확도는 아무 의미가 없습니다. 그래서 순서가 정해집니다. 사용자 증상으로 SLO 를 정의하고, 예산에서 임계값을 역산하고, 긴 창과 짧은 창을 AND 로 묶어 민감도와 오탐을 동시에 잡고, 그룹핑과 억제로 알림 개수를 사람이 읽을 수 있는 수준으로 줄이고, 페이지에는 런북을 강제합니다. 임계값을 "과거 최대치의 1.2배" 같은 방식으로 정하면 왜 그 값인지 설명할 수 없고, 설명할 수 없는 임계값은 사고가 날 때마다 조금씩 올라갑니다.

단계

1. /root/pca-alerting/alertmanager.yml 을 만들고 루트 route 를 씁니다. receiver: ticket-queue, group_by: ['alertname', 'cluster', 'slo'], group_wait: 30s, group_interval: 5m, repeat_interval: 4h.
2. 루트의 routes 첫 항목에 자식 라우트를 넣습니다. matchers: ['severity="page"'], receiver: oncall-pager, group_wait: 10s, repeat_interval: 1h.
3. receivers 에 두 수신자를 정의합니다. ticket-queueoncall-pager 각각에 webhook_configs 를 두고 urlhttp:// 로 시작하는 아무 내부 주소면 됩니다.
4. inhibit_rules 첫 항목을 씁니다. source_matchers: ['alertname="ClusterDown"', 'severity="page"'], target_matchers: ['severity=~"page|ticket"'], equal: ['cluster'].
5. /root/pca-alerting/burnrate.yml 을 만들고 그룹 아래 알림 CheckoutErrorBudgetBurnFast 를 씁니다. exprjob:slo_errors:ratio_rate1h{job="checkout-api"} > (14.4 * 0.001)job:slo_errors:ratio_rate5m{job="checkout-api"} > (14.4 * 0.001)job:http_requests:rate5m{job="checkout-api"} > 1 세 항을 and 로 묶은 것, for: 2m, labelsseverity: pageslo: checkout-availability, annotationssummaryrunbook_url.
6. 같은 파일에 알림 CheckoutErrorBudgetBurnSlow 를 추가합니다. exprjob:slo_errors:ratio_rate6h{job="checkout-api"} > (6 * 0.001)job:slo_errors:ratio_rate30m{job="checkout-api"} > (6 * 0.001)and 로 묶은 것, for: 15m, labelsseverity: ticketslo: checkout-availability.
7. /root/pca-alerting/runbook-gate.sh 를 작성합니다. 첫 번째 인자로 룰 파일 경로를 받아, labels.severitypage 인데 annotations.runbook_url 이 없는 알림이 하나라도 있으면 그 이름을 출력하고 0 이 아닌 코드로 종료하고, 하나도 없으면 0 으로 종료합니다.

참고

단계 7개

  1. 루트 라우트 쓰기
  2. 심각도별 자식 라우트
  3. 수신자 정의
  4. 억제 규칙
  5. 빠른 소진 알림
  6. 느린 소진 알림
  7. 런북 CI 게이트 스크립트