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 environment

Custom (직접 입력)

값을 직접 입력합니다.

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대시보드에 표시될 이름
HideVariable (드롭다운 숨김), Label (레이블만 숨김)
RefreshOn 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])

하나의 대시보드로 모든 환경과 서비스를 모니터링할 수 있습니다.

댓글

아직 댓글이 없습니다.

댓글을 작성하려면 로그인이 필요합니다.