05. 동적 대시보드와 변수(Variables) 활용
학습 목표: 하드코딩된 쿼리 대신 변수(Variables)를 사용하여, 사용자가 드롭다운 메뉴에서 대상을 선택하면 즉시 반영되는 인터랙티브한 대시보드를 구축합니다. 선수 지식: 04_실전_대시보드_제작_기초
🤔 1. 왜 변수(Variables)가 필요한가요?
지난 시간에 만든 대시보드의 CPU 쿼리를 다시 봅시다.
... by (instance) ...이 쿼리는 모든 인스턴스의 그래프를 다 그려줍니다. 노드가 100개라면 그래프가 100개 생겨서 보기가 매우 힘들겠죠.
“나는 w1-k8s 노드만 보고 싶은데?” 또는 “특정 네임스페이스만 보고 싶은데?”
이럴 때 쿼리를 직접 수정하지 않고, 화면 상단에서 선택하게 만드는 기능이 바로 Variables입니다.
🛠️ 2. 변수 만들기 (Creating Variables)
대시보드 상단의 톱니바퀴(⚙️) Settings → Variables 메뉴로 이동합니다.
실습 1: 노드 선택 변수 ($node)
- Add variable 클릭
- General 설정:
- Name:
node(쿼리에서 사용할 변수명, 예:$node) - Label:
Node(화면에 표시될 이름) - Type:
Query
- Name:
- Query Options 설정:
- Data source:
Prometheus - Query:
label_values(node_cpu_seconds_total, instance)- 해석:
node_cpu...메트릭에 있는instance레이블의 값들을 모두 가져와라.
- 해석:
- Data source:
- Selection Options 설정:
- Multi-value: ✅ (여러 개 동시 선택 가능)
- Include All option: ✅ (전체 선택 가능)
- 하단 Run query를 눌러 미리보기 값(
cp-k8s,w1-k8s…)이 나오는지 확인 후 Apply.
🔗 3. 패널에 변수 연결하기
변수를 만들었지만, 패널들은 아직 이 변수를 모릅니다. 쿼리를 수정해서 변수를 심어줘야 합니다.
3-1. CPU 패널 수정
대시보드로 돌아와 CPU 패널의 Edit 모드로 들어갑니다.
변경 전:
rate(node_cpu_seconds_total{mode="idle"}[1m])변경 후:
rate(node_cpu_seconds_total{mode="idle", instance=~"$node"}[1m])instance=~"$node": 인스턴스가$node변수에서 선택된 값과 **매칭(=~)**되는 것만 가져오라는 뜻입니다.- 주의: Multi-value 옵션을 켰다면 반드시
=대신=~(Regex 매칭 연산자)를 써야 합니다. Grafana가 자동으로(val1|val2)형태의 정규식으로 변환해주기 때문입니다.
3-2. Loki 패널 수정 (응용)
로그 패널도 특정 파드만 볼 수 있게 하려면? 먼저 Pod 변수를 만들어야겠죠?
- Variables에서 새 변수
$pod생성- Data source:
Loki - Query:
label_values(pod)
- Data source:
- Logs 패널 쿼리 수정:
{app="log-generator", pod=~"$pod"}
⛓️ 4. 변수 체이닝 (Chained Variables) - 고급
“네임스페이스를 선택하면, 그 안에 있는 파드만 목록에 뜨게 할 수는 없을까요?” 가능합니다! 변수 쿼리 안에 다른 변수를 넣으면 됩니다.
- $namespace 변수 생성:
- Query:
label_values(namespace)
- Query:
- $pod 변수 수정 (Chaining):
- Query:
label_values({namespace="$namespace"}, pod) - 해석: 선택된
$namespace를 가진 로그들 중에서pod이름만 가져와라.
- Query:
이제 화면에서 네임스페이스를 kube-system으로 바꾸면, 파드 목록도 자동으로 coredns... 등으로 바뀝니다.
🎨 5. 반복(Repeating) 패널
변수에서 노드 3개를 선택했을 때, 하나의 그래프에 선 3개를 그리는 대신 3개의 그래프 패널을 따로 만들고 싶다면?
- 패널 Edit → 오른쪽 Panel options → Repeat options
- Repeat by variable:
node선택 - Repeat direction:
Horizontal(가로) 또는Vertical(세로) - 저장 후 대시보드에서 노드를 여러 개 선택해보세요. 패널이 마법처럼 복제됩니다!
🎯 요약 및 다음 단계
변수를 사용하면 대시보드가 살아있는 도구가 됩니다.
- 쿼리 지식이 없는 팀원도 드롭다운만 클릭해서 원하는 데이터를 볼 수 있습니다.
- 하나의 대시보드로 수백 대의 서버를 관리할 수 있습니다.
이제 데이터를 자유자재로 다루게 되었으니, 다음 장 **06_Loki_LogQL_심화_및_경보**에서는 단순한 로그 ‘조회’를 넘어, 로그 데이터를 분석하여 이상 징후를 탐지하고 알람(Alert)을 보내는 방법을 배워보겠습니다.