메타 모니터링
메타 모니터링 (Meta monitoring)
알림 지표를 모니터링해 잠재적 문제가 심각해지기 전에 파악할 수 있어요. 메타 모니터링은 모니터링 시스템 자체를 모니터링하고 모니터링이 제대로 동작하지 않을 때 알리는 과정이에요. Grafana는 메타 모니터링을 위해 미리 정의된 지표를 제공해요.
출처: Meta monitoring
본문
모니터링 시스템(즉 Grafana)에 중요한 지표를 식별하고 이를 어떻게 모니터링할지 설정해요. 메타 모니터링 지표로 알림 시스템의 상태를 다음과 같은 방식으로 이해할 수 있어요.
- (선택) 이 지표를 패널에 사용하는 Grafana 대시보드를 만들어요(다른 지표와 동일하게).
- (선택) 이 지표를 주기적으로 확인하는 Grafana 알림 규칙을 만들어요(다른 알림 규칙과 동일하게).
- (선택) Grafana의 Explore 모듈을 사용해요.
Grafana 관리형 알림용 지표
Grafana 관리형 알림을 메타 모니터링하려면 Prometheus 인스턴스에서 두 가지 유형의 지표를 수집할 수 있어요.
- 상태 이력 지표(
GRAFANA_ALERTS) — Grafana Alerting이 알림 상태 이력의 일부로 내보내는 지표. - 스크래핑 지표(Scraped metrics) — Grafana의
/metrics엔드포인트가 알림 활동과 성능을 모니터링하도록 내보내는 지표.
이 지표들을 수집·저장하려면 Prometheus 호환 서버가 필요해요.
GRAFANA_ALERTS 지표
알림 상태 이력용 Prometheus를 구성했다면 Grafana는 알림 상태 변경을 ALERTS 지표에 기록해요.
GRAFANA_ALERTS{alertname="", alertstate="", grafana_alertstate="", grafana_rule_uid="", <additional alert labels>}
이 GRAFANA_ALERTS 지표는 Prometheus Alerting이 사용하는 ALERTS 지표와 호환되며 추가 라벨 두 개를 포함해요.
- Grafana 규칙의 UID를 위한 새
grafana_rule_uid라벨. alertstate라벨에 포함된 동등한 Prometheus 상태와 약간 다른 Grafana 알림 상태를 위한 새grafana_alertstate라벨.
알림 라벨은 호환성을 보장하도록 Prometheus에 기록되기 전에 자동으로 변환돼요. Prometheus는 라벨 이름이 문자나 밑줄(_)로 시작하고 그 뒤로 문자, 숫자, 추가 밑줄만 와야 해요. 변환 중에 유효하지 않은 문자가 대체돼요. 예를 들어 1my-label은 _my_label이 돼요.
| Grafana 상태 | alertstate |
grafana_alertstate |
|---|---|---|
| Alerting | firing |
alerting |
| Recovering | firing |
recovering |
| Pending | pending |
pending |
| Error | firing |
error |
| NoData | firing |
nodata |
| Normal | (지표 없음) | (지표 없음) |
그러면 이 지표를 다른 Prometheus 지표처럼 질의할 수 있어요.
# firing-alerts
GRAFANA_ALERTS{grafana_alertstate="alerting"}
# recovering-alerts
GRAFANA_ALERTS{grafana_alertstate="recovering"}
# critical-alerts-in-pending
GRAFANA_ALERTS{grafana_alertstate="pending", severity="critical"}
스크래핑 지표
스크래핑된 경고 지표를 수집하려면 Prometheus가 Grafana에서 지표를 스크래핑하도록 구성해요.
- job_name: grafana
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- grafana:3000
알림 규칙 평가를 담당하는 Grafana ruler와 발화·해결 알림의 알림 전송을 담당하는 Grafana Alertmanager는 이를 관찰할 수 있는 여러 지표를 제공해요.
grafana_alerting_alerts
알림 규칙 평가를 담당하는 Grafana ruler와 발화·해결 알림의 알림 전송을 담당하는 Grafana Alertmanager는 이를 관찰할 수 있는 여러 지표를 제공해요. 이 지표는 normal, pending, alerting, nodata, error 알림 수를 보여주는 카운터예요. 예를 들어 grafana_alerting_alerts{state="error"}가 0보다 클 때 발화되는 알림을 만들 수 있어요.
grafana_alerting_schedule_alert_rules
이 지표는 예약된 알림 규칙 수를 보여주는 게이지예요. 알림 규칙은 일시 중지되지 않는 한 예약되며, 이 지표의 값은 Grafana의 일시 중지되지 않은 알림 규칙 총수와 일치해야 해요.
grafana_alerting_schedule_periodic_duration_seconds_bucket
이 지표는 알림 규칙을 평가하는 스케줄러에서 개별 tick을 처리하는 데 걸리는 시간을 보여주는 히스토그램이에요. 스케줄러가 tick 처리에 10초보다 오래 걸리면 보류 평가가 누적되어 알림 규칙이 예상보다 늦게 발화될 수 있어요.
grafana_alerting_schedule_query_alert_rules_duration_seconds_bucket
이 지표는 스케줄러가 데이터베이스에서 최신 규칙을 가져오는 데 걸리는 시간을 보여주는 히스토그램이에요. 이 지표가 높으면 schedule_periodic_duration_seconds도 함께 평가돼요.
grafana_alerting_scheduler_behind_seconds
이 지표는 스케줄러가 있어야 할 위치보다 몇 초 뒤쳐져 있는지 보여주는 게이지예요. schedule_periodic_duration_seconds가 10초보다 길면 값이 증가하고 10초보다 짧으면 감소해요. 이 지표의 가능한 최솟값은 0이에요.
grafana_alerting_notification_latency_seconds_bucket
이 지표는 발화·해결 알림의 알림을 보내는 데 걸린 초 수를 보여주는 히스토그램이에요. 이 지표로 느리거나 과도하게 사용되는 통합(예: 보낼 수 있는 속도보다 빠르게 이메일이 들어오는 SMTP 서버)을 관찰할 수 있어요.
grafana_alerting_state_history_writes_failed_total
이 지표는 구성된 알림 상태 이력 백엔드에 대한 실패한 쓰기 수를 보여주는 카운터예요. 서로 다른 백엔드(예: loki 또는 prometheus)를 구분하는 backend 라벨을 포함해요. 예를 들어 grafana_alerting_state_history_writes_failed_total{backend="prometheus"}가 0보다 클 때 발화되는 알림을 만들어 Prometheus 원격 쓰기가 실패하는지 감지할 수 있어요.
Grafana 관리형 알림용 로그
알림 상태 이력용 Loki를 구성했다면 Grafana 관리형 알림의 상태 변경 관련 로그가 Loki 데이터 소스에 저장돼요.
Grafana Explore와 Loki 쿼리 편집기를 사용해 알림 상태 변경을 검색할 수 있어요.
# basic-query
{from="state-history"} | json
# additional-filters
{from="state-history"} | json | previous=~"Normal.*" | current=~"Alerting.*"
# failing-rules
{from="state-history"} | json | current=~"Error.*"
Logs 보기에서 다음 필드를 선택해 개별 알림의 세부 정보를 검토할 수 있어요.
previous: 이전 알림 인스턴스 상태current: 현재 알림 인스턴스 상태ruleTitle: 알림 규칙 제목ruleID및ruleUIDlabels_alertname,labels_new_label,labels_grafana_folder- 추가 사용 가능한 필드
또는 Grafana의 History 페이지에 접근해 개별 알림 또는 모든 알림의 상태 변경을 시각화·필터링할 수 있어요. 알림 이력을 활성화했다면 알림 이력 보기를 참고해 History 페이지 Notifications 탭에서 보낸 알림과 전달 결과를 검토할 수 있어요.
Mimir 관리형 알림용 지표
Grafana Mimir 관리형 알림을 메타 모니터링하려면 오픈소스 및 온프레미스 사용자는 Mimir ruler가 내보내는 지표를 수집·저장할 Prometheus/Mimir 서버 또는 다른 지표 데이터베이스가 필요해요.
rule_evaluation_failures_total
이 지표는 규칙 평가 실패의 총수를 보여주는 카운터예요.
Alertmanager용 지표
Alertmanager를 메타 모니터링하려면 Alertmanager가 내보내는 지표를 수집·저장할 Prometheus/Mimir 서버 또는 다른 지표 데이터베이스가 필요해요.
예를 들어 Prometheus를 사용한다면 Alertmanager에서 지표를 스크래핑하도록 Prometheus에 scrape_config를 추가해야 해요.
- job_name: alertmanager
honor_timestamps: true
scrape_interval: 15s
scrape_timeout: 10s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- alertmanager:9093
다음은 Alertmanager에서 사용할 수 있는 지표 목록이에요.
alertmanager_alerts
이 지표는 Alertmanager의 활성, 억제, 미처리 알림 수를 보여주는 카운터예요. 억제된 알림은 사일런스된 알림이고, 미처리 알림은 Alertmanager로 전송됐지만 아직 처리되지 않은 알림이에요.
alertmanager_alerts_invalid_total
이 지표는 Alertmanager로 전송된 잘못된 알림 수를 보여주는 카운터예요. 이 카운터는 0을 초과해서는 안 되므로, 대부분의 경우 이 지표가 증가할 때마다 발화되는 알림을 만들어요.
alertmanager_notifications_total
이 지표는 Alertmanager가 보낸 알림 수를 보여주는 카운터예요. 이 지표는 통합별로 보낸 알림 수(예: email)를 보여주는 "integration" 라벨을 사용해요.
alertmanager_notifications_failed_total
이 지표는 총 실패한 알림 수를 보여주는 카운터예요. 이 지표도 실패한 알림 수(예: 실패한 이메일)를 통합별로 보여주는 "integration" 라벨을 사용해요. 대부분의 경우 rate 함수를 사용해 알림이 얼마나 자주 실패하는지 파악해요.
alertmanager_notification_latency_seconds_bucket
이 지표는 Alertmanager가 알림을 보내고 수신 서비스가 그 알림을 수락하는 데 걸리는 시간을 보여주는 히스토그램이에요. 이 지표는 통합별 시간을 보여주는 "integration" 라벨을 사용해요. 예를 들어 이 지표로 이메일 전송의 95번째 백분위수 대기 시간을 표시할 수 있어요.
고가용성 모드 Alertmanager용 지표
Alertmanager를 고가용성 모드로 사용한다면 알림을 만들 수 있는 추가 지표가 여러 개 있어요.
alertmanager_cluster_members
이 지표는 클러스터의 현재 멤버 수를 보여주는 게이지예요. 이 게이지의 값은 모든 Alertmanager에서 동일해야 해요. 서로 다른 Alertmanager가 다른 멤버 수를 보여준다면 Alertmanager 클러스터에 문제가 있다는 신호예요. 무슨 문제인지 더 잘 이해하려면 Alertmanager의 지표와 로그를 살펴봐야 해요.
alertmanager_cluster_failed_peers
이 지표는 현재 실패한 피어 수를 보여주는 게이지예요.
alertmanager_cluster_health_score
이 지표는 Alertmanager의 상태 점수를 보여주는 게이지예요. 값이 낮을수록 좋고, 0이면 Alertmanager가 정상이에요.
alertmanager_cluster_peer_info
이 지표는 게이지예요. 상수 값 1을 가지며, 각 알려진 피어의 Peer ID를 담은 "peer"라는 라벨을 포함해요.
alertmanager_cluster_reconnections_failed_total
이 지표는 실패한 피어 연결 시도 수를 보여주는 카운터예요. 대부분의 경우 rate 함수를 사용해 네트워크에 문제나 불안정성이 있는지 나타낼 수 있는 재연결 실패 빈도를 파악해야 해요.
더 알아보기 (Learn more)
- Configure alert state history - 상태 이력 구성
- View alert state history - 상태 이력 보기
- View notification history - 알림 이력 보기
- Alerting fundamentals - 알림 기본 개념
- Meta monitoring - 원문 문서