Grafana 소개

Grafana 설치와 운영 개요입니다. data source, dashboard, alerting, Docker 테스트 실행, systemd 확인, 보안과 백업 대상을 정리했습니다.

Grafana는 metrics, logs, traces, SQL 데이터 등을 시각화하고 알림으로 연결하는 observability 대시보드 도구입니다. Grafana 자체가 데이터를 수집하는 시스템이라기보다 Prometheus, Loki, Elasticsearch, PostgreSQL, CloudWatch 같은 data source를 query해 보여주는 계층입니다.

Grafana를 설치할 때는 “예쁜 대시보드”보다 data source, query, dashboard 변수, alert rule, 권한 모델을 먼저 설계해야 합니다.

빠른 테스트 실행

docker run -d \
  --name grafana \
  -p 3000:3000 \
  -v grafana-data:/var/lib/grafana \
  grafana/grafana-oss:latest

docker logs --tail=100 grafana

운영에서는 latest보다 고정 버전 태그와 백업 가능한 volume을 사용합니다. 초기 로그인 후 기본 암호는 반드시 변경합니다.

패키지 설치 후 확인

systemctl status grafana-server --no-pager
journalctl -u grafana-server -n 100 --no-pager
ss -lntp | grep 3000

Data source 설계

  • Prometheus: 시계열 metrics와 alerting에 자주 사용합니다.
  • Loki: label 기반 로그 조회에 사용합니다.
  • Elasticsearch/OpenSearch: 검색 기반 로그 분석에 사용합니다.
  • PostgreSQL/MySQL: 서비스 운영 데이터나 배치 결과 시각화에 사용할 수 있습니다.

data source 계정은 읽기 전용 권한부터 시작합니다. dashboard 조회에 DB admin 권한을 쓰면 사고 범위가 커집니다.

Dashboard 구성 기준

  • 서비스별 SLI/SLO 지표를 맨 위에 둡니다.
  • CPU/Memory/Disk 같은 host 지표와 애플리케이션 지표를 분리합니다.
  • 변수로 environment, namespace, host, service를 선택할 수 있게 합니다.
  • 패널 제목에는 단위와 기준을 명확히 적습니다.
  • 대시보드 JSON은 Git에 export해 변경 이력을 남깁니다.

Alerting 설계

# 예시 PromQL
avg_over_time(up{job="node"}[5m]) == 0
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
node_filesystem_avail_bytes / node_filesystem_size_bytes * 100 < 10

alert rule은 대시보드 패널과 별도로 운영 기준을 가져야 합니다. “그래프가 높다”가 아니라 “사용자 영향이 있고 조치가 필요한 상태”를 알림으로 만듭니다.

운영 보안

  • 관리자 계정은 개인별 계정과 SSO를 사용합니다.
  • Anonymous access는 공용 대시보드가 아닌 이상 끕니다.
  • data source secret은 환경 변수나 secret store에서 관리합니다.
  • 공개 reverse proxy 뒤에 둘 때는 TLS와 인증을 먼저 구성합니다.
  • plugin은 필요한 것만 설치하고 업데이트 이력을 확인합니다.

백업 대상

  • Grafana database 또는 /var/lib/grafana
  • provisioning 설정 파일
  • dashboard JSON export
  • alert rule과 contact point 설정
  • custom plugin 목록

공식 문서

BGM EVER