05. 동적 대시보드와 변수(Variables) 활용

학습 목표: 하드코딩된 쿼리 대신 변수(Variables)를 사용하여, 사용자가 드롭다운 메뉴에서 대상을 선택하면 즉시 반영되는 인터랙티브한 대시보드를 구축합니다. 선수 지식: 04_실전_대시보드_제작_기초


🤔 1. 왜 변수(Variables)가 필요한가요?

지난 시간에 만든 대시보드의 CPU 쿼리를 다시 봅시다.

... by (instance) ...

이 쿼리는 모든 인스턴스의 그래프를 다 그려줍니다. 노드가 100개라면 그래프가 100개 생겨서 보기가 매우 힘들겠죠.

“나는 w1-k8s 노드만 보고 싶은데?” 또는 “특정 네임스페이스만 보고 싶은데?” 이럴 때 쿼리를 직접 수정하지 않고, 화면 상단에서 선택하게 만드는 기능이 바로 Variables입니다.


🛠️ 2. 변수 만들기 (Creating Variables)

대시보드 상단의 톱니바퀴(⚙️) SettingsVariables 메뉴로 이동합니다.

실습 1: 노드 선택 변수 ($node)

  1. Add variable 클릭
  2. General 설정:
    • Name: node (쿼리에서 사용할 변수명, 예: $node)
    • Label: Node (화면에 표시될 이름)
    • Type: Query
  3. Query Options 설정:
    • Data source: Prometheus
    • Query: label_values(node_cpu_seconds_total, instance)
      • 해석: node_cpu... 메트릭에 있는 instance 레이블의 값들을 모두 가져와라.
  4. Selection Options 설정:
    • Multi-value: ✅ (여러 개 동시 선택 가능)
    • Include All option: ✅ (전체 선택 가능)
  5. 하단 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 변수를 만들어야겠죠?

  1. Variables에서 새 변수 $pod 생성
    • Data source: Loki
    • Query: label_values(pod)
  2. Logs 패널 쿼리 수정:
    {app="log-generator", pod=~"$pod"}

⛓️ 4. 변수 체이닝 (Chained Variables) - 고급

“네임스페이스를 선택하면, 그 안에 있는 파드만 목록에 뜨게 할 수는 없을까요?” 가능합니다! 변수 쿼리 안에 다른 변수를 넣으면 됩니다.

  1. $namespace 변수 생성:
    • Query: label_values(namespace)
  2. $pod 변수 수정 (Chaining):
    • Query: label_values({namespace="$namespace"}, pod)
    • 해석: 선택된 $namespace를 가진 로그들 중에서 pod 이름만 가져와라.

이제 화면에서 네임스페이스를 kube-system으로 바꾸면, 파드 목록도 자동으로 coredns... 등으로 바뀝니다.


🎨 5. 반복(Repeating) 패널

변수에서 노드 3개를 선택했을 때, 하나의 그래프에 선 3개를 그리는 대신 3개의 그래프 패널을 따로 만들고 싶다면?

  1. 패널 Edit → 오른쪽 Panel optionsRepeat options
  2. Repeat by variable: node 선택
  3. Repeat direction: Horizontal (가로) 또는 Vertical (세로)
  4. 저장 후 대시보드에서 노드를 여러 개 선택해보세요. 패널이 마법처럼 복제됩니다!

🎯 요약 및 다음 단계

변수를 사용하면 대시보드가 살아있는 도구가 됩니다.

  • 쿼리 지식이 없는 팀원도 드롭다운만 클릭해서 원하는 데이터를 볼 수 있습니다.
  • 하나의 대시보드로 수백 대의 서버를 관리할 수 있습니다.

이제 데이터를 자유자재로 다루게 되었으니, 다음 장 **06_Loki_LogQL_심화_및_경보**에서는 단순한 로그 ‘조회’를 넘어, 로그 데이터를 분석하여 이상 징후를 탐지하고 알람(Alert)을 보내는 방법을 배워보겠습니다.