Grafana — 흩어진 지표를 한 화면에서 보고 경보 받기
서비스가 하나일 땐 "느려요?" 소리가 나오면 그 서버 로그 한 번 보면 됐다. 서비스가 수십 개가 되면 다르다. 응답이 느린데 어느 서비스가, 언제부터, 왜 그런지를 화면 없이 알아낼 방법이 없다. 장애가 났을 때 서버에 일일이 접속해 로그를 뒤지는 건 너무 느리다.
모니터링은 이걸 "숫자를 계속 모으고, 그림으로 보고, 이상하면 알림 받는" 체계로 바꾼다. 그 체계에서 Grafana가 맡는 자리는 시각화와 경보다. CPU·응답시간·에러율 같은 지표는 다른 도구(Prometheus 등)가 수집해 저장하고, Grafana는 그걸 끌어와 대시보드로 그리고, 값이 위험선을 넘으면 알림을 쏜다. Grafana는 데이터를 만드는 곳이 아니라, 흩어진 데이터를 한 화면에 모아 보여주는 창이다.
Grafana는 보통 지표를 직접 수집·저장하지 않는다. 수집·저장은
Prometheus(지표), Loki(로그) 같은 도구가 하고,
Grafana는 그 저장소를 데이터 소스로 연결해 질의·시각화·경보만
맡는다. "수집 ≠ 시각화"라는 역할 분리를 기억하자.
1. 왜 '한 화면'이 필요한가
대시보드가 단순한 예쁜 그래프가 아니라 왜 필수인지부터 보자. 흩어진 숫자를 모아 보는 것 자체가 운영의 핵심 능력이다.
- 1장애를 빨리 '발견'하려고
에러율·지연이 치솟는 순간을 눈으로 즉시 포착.
숫자가 그래프로 흐르면, 평소 패턴에서 벗어나는 순간이 한눈에 보인다. 사용자 신고가 들어오기 전에 이상을 잡는 게 목표다.
- 2원인을 빨리 '좁히려고'
여러 지표를 나란히 놓아 상관관계를 본다.
응답시간이 튄 시점에 DB 커넥션도 같이 찼다면 원인이 좁혀진다. 흩어진 지표를 같은 시간축 위에 겹쳐 보는 게 디버깅을 빠르게 한다.
- 3추세를 보고 미리 '대비하려고'
메모리·트래픽의 장기 증가를 보고 증설을 판단.
며칠·몇 주 단위 그래프는 "이 속도면 다음 주에 디스크가 찬다" 같은 예측을 준다. 장애를 터지고 대응이 아니라 터지기 전 대비로 옮긴다.
요약하면 대시보드의 목적은 "예쁘게"가 아니라 발견을 앞당기고 원인을 좁히는 것이다. Grafana는 그 발견의 창을 만든다.
2. 지표가 화면이 되기까지
Grafana 화면 하나가 그려지는 과정을 따라가면, 각 도구의 역할 분담이 분명해진다. Grafana는 이 사슬의 마지막 단계에 선다.
CPU·요청수·지연 등을 측정값으로
Prometheus가 시계열로 적재
'지난 1시간 에러율' 같은 쿼리
그래프·게이지·표로 표시
- 1데이터 소스 연결
Prometheus·Loki·DB 등을 Grafana에 등록한다.
Grafana는 여러 종류의 저장소를 동시에 연결할 수 있다. 그래서 지표(Prometheus)·로그(Loki)·트레이스를 한 대시보드에 섞어 놓고 볼 수 있다.
- 2패널 — 질의 한 개를 그림 한 개로
쿼리를 적고, 그걸 그래프·게이지·표로 표현한다.
패널마다 "무엇을 보여줄지"의 질의가 들어간다.
응답 p99,에러율같은 값을 각 패널이 맡고, 그걸 모아 대시보드를 만든다. - 3대시보드 — 패널의 모음
관련 패널을 한 화면에 배치해 '상황판'을 만든다.
"주문 서비스 상태판"처럼 목적별로 묶는다. 시간 범위를 바꾸면 모든 패널이 같은 구간으로 함께 움직여, 한 시점의 전체 그림을 본다.
3. 보는 것에서 끝나지 않는다 — 경보
대시보드는 누군가 보고 있을 때만 쓸모가 있다. 새벽 3시에 에러율이 치솟으면? 그래서 모니터링의 진짜 가치는 사람이 안 보고 있어도 이상을 알려주는 경보에 있다. Grafana는 시각화에 더해 이 알림도 맡는다.
- 1규칙 — '이 선을 넘으면'
지표에 임계치·조건을 걸어 둔다.
"에러율이 5분간 5%를 넘으면", "응답 p99가 1초를 넘으면" 같은 규칙을 만든다. 평소엔 조용하다가 조건이 충족될 때만 깨어난다.
- 2발송 — 사람에게 닿게
Slack·이메일·온콜 도구로 알림을 보낸다.
규칙이 깨지면 정해둔 채널로 알림이 나간다. 누가 봐야 하는지·어떤 심각도인지를 라우팅해, 맞는 사람에게 맞는 긴급도로 닿게 한다.
경보가 너무 자주, 너무 사소하게 울리면 사람들이 무시하기 시작 한다(alert fatigue). 그러면 정작 중요한 알림도 묻힌다. "사람이 즉시 행동해야 하는 것"만 알림으로 보내고, 나머지는 대시보드로 보는 게 좋다. 경보는 많을수록이 아니라 의미 있을수록 좋다.
잘 갖춘 모니터링은 지표(metrics)·로그(logs)· 트레이스(traces) 세 가지를 함께 본다. 지표는 "무엇이 얼마나", 로그는 "그때 무슨 일이", 트레이스는 "요청이 어느 서비스를 거쳤나"를 답한다. Grafana는 이 셋을 한 화면에서 오가며 보게 해, "이상 발견 → 로그 확인 → 경로 추적"을 끊김 없이 잇는다.
정리하면 Grafana는 모니터링 사슬의 끝에서 시각화와 경보를 맡는 창이다. 수집·저장은 다른 도구가 하고, Grafana는 그걸 끌어와 한 화면에 모아 발견을 앞당기고, 위험선을 넘으면 사람에게 알린다. 핵심은 도구 자체가 아니라 "무엇을 보고, 무엇에 알림을 걸지"를 잘 고르는 것이다.
한 장 요약
- 1문제
서비스가 많아지면 '지금 괜찮은가'를 한눈에 볼 창이 필요하다.
- 2역할
Grafana는 수집·저장은 안 하고 시각화와 경보만 맡는 '보는 쪽'.
- 3사슬
서비스가 지표 노출 → 수집기 저장 → Grafana가 질의해 대시보드로 렌더.
- 4구성
데이터 소스 연결 → 패널(질의 1개=그림 1개) → 대시보드(상황판).
- 5경보
임계치 규칙을 걸어 Slack·메일 등으로 발송 — 사람이 안 봐도 알게.
- 6주의
사소한 알림 남발은 피로를 부른다 — 의미 있는 것만, 세 기둥(지표·로그·트레이스)을 함께.