snow · 2026.4.20 07:36 · 조회 1
Grafana 변수 & 템플릿 활용
변수(Variable)란?
변수를 사용하면 대시보드 상단에 드롭다운 필터를 추가하여 하나의 대시보드를 여러 환경, 서버, 서비스에서 재사용할 수 있습니다.
변수 추가 방법
Dashboard Settings (⚙️) → Variables → Add variable
변수 유형
Query (쿼리 기반)
데이터 소스에서 동적으로 값을 가져옵니다.
Prometheus 예시 — 인스턴스 목록
Type: Query
Data source: Prometheus
Query: label_values(node_cpu_seconds_total, instance)
MySQL 예시 — 환경 목록
1SELECT DISTINCT environment FROM servers ORDER BY environmentCustom (직접 입력)
값을 직접 입력합니다.
Values: prod,staging,dev
Interval (시간 간격)
시간 집계 단위를 선택합니다.
Values: 1m,5m,15m,1h,6h,1d
Constant (상수)
URL이나 고정 값을 변수로 관리합니다.
변수를 쿼리에서 사용
변수는 $변수명 또는 ${변수명} 형식으로 참조합니다.
PromQL 예시
1rate(node_cpu_seconds_total{instance="$instance", mode!="idle"}[${interval}])SQL 예시
1SELECT $__timeGroup(ts, '$interval') AS time, COUNT(*) AS count2FROM events3WHERE environment = '$environment'4 AND $__timeFilter(ts)5GROUP BY time다중 선택 (Multi-value)
변수 설정에서 Multi-value 옵션을 활성화하면 여러 값을 동시에 선택할 수 있습니다.
쿼리에서 사용 시:
1# 정규식 매칭으로 다중 선택 지원2rate(http_requests_total{instance=~"$instance"}[5m])All option을 활성화하면 전체 선택 옵션이 생깁니다.
변수 간 연계 (Chained Variables)
변수가 다른 변수의 값에 따라 동적으로 변경됩니다.
변수1: $namespace → Kubernetes 네임스페이스 목록
변수2: $pod → $namespace에 속한 Pod 목록
Query: label_values(kube_pod_info{namespace="$namespace"}, pod)
변수 표시 옵션
| 옵션 | 설명 |
|---|---|
| Label | 대시보드에 표시될 이름 |
| Hide | Variable (드롭다운 숨김), Label (레이블만 숨김) |
| Refresh | On dashboard load, On time range change |
| Sort | 알파벳, 숫자, 자연어 정렬 |
활용 예시: 멀티 환경 대시보드
변수: $env = prod | staging | dev
변수: $service = api | worker | scheduler
변수: $interval = 1m | 5m | 15m
쿼리:
rate(http_requests_total{env="$env", service="$service"}[$interval])
하나의 대시보드로 모든 환경과 서비스를 모니터링할 수 있습니다.
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.