Zabbix로 Kubernetes Pod 주요 지표 시각화하기 (심층 가이드) — Grafana 연동으로 Pod CPU·Memory 사용량을 동적 대시보드로 구현하기


개요

이전에 관련해서 쓴 글이 있는데 조금 더 심층적으로 가이드를 해야겠다는 생각이 들어서 이 글을 쓰는 부분이니 도움이 되었으면 한다.
Zabbix에서 Kubernetes를 모니터링하기 위해 Kubernetes Kubelet by HTTP 템플릿을 적용하면, 매크로 {$KUBE.API.URL} 에 지정된 IP를 기준으로
다음과 같은 호스트 그룹이 자동 생성된다.

{$KUBE.API.URL}의 IP : Kubernetes/Components: Kubelet

이 글에서는 해당 데이터를 기반으로 Pod CPUPod Memory 사용량을 Grafana에서 시각화하는 방법을 다룬다.
대시보드 생성이나 변수(variable) 작성 기본 과정은 이전 시리즈

🧭 「Zabbix 서버 지표를 Grafana로 시각화하기」 를 참고하기 바란다.
– 검색창에서 검색


🧩 Pod Memory 시각화

대상 그룹

  • Group: {$KUBE.API.URL}의 IP : Kubernetes/Components: Kubelet
  • Item tag: namespace: 네임스페이스 실제 이름
  • Item 예시: Namespace [argocd] Pod [argocd-applicationset-controller-5867d7759-dksldk] Container [argocd-applicationset-controller]: Working set

이 쿼리를 통해 Pod Memory 사용량(Working set) 을 시각화할 수 있다.
이제 이를 변수로 처리하여 동적 대시보드로 구성한다.


🧮 변수 만들기

1️⃣ Group 필터링

  • Name: Group
  • Hide: Variable
  • Query Type: Group
  • Group: /Kubelet/i

2️⃣ Item tag 필터링 (namespace)

  • Name: namespace
  • Label: 네임스페이스 [Memory]
  • Query Type: item tag
  • Group: $Group
  • Host: /.*/
  • Item Tag: /^namespace:\s*([^\s]+)\s*$/
  • Multi-value: ✅
  • Include All option: ✅

3️⃣ Item 필터링 (Working set)

Working set은 Pod의 실질적인 메모리 사용량을 나타낸다.

  • Name: memory
  • Label: POD별 Memory 사용량
  • Query Type: item
  • Group: $Group
  • Host: /.*/
  • Item Tag: $namespace
  • Item : /:\s*Working set$/i
  • Multi-value: ✅
  • Include All option: ✅

💡 Tip
가끔 변수 Query Options에서 Item Tag 자리에 Application이 표시되는 현상이 있다.
이럴 땐 다음 순서로 처리한다:

  1. Home → Connections → Data Sources → Zabbix Datasource → Save & Test 클릭
    → Zabbix API 캐시가 초기화됨
  2. 그래도 해결되지 않으면, 아래 명령으로 플러그인 업데이트 후 Grafana 재시작
    # grafana-cli plugins update alexanderzobnin-zabbix-datasource
    # systemctl restart grafana-server

⚙️ Pod CPU 시각화

대상 그룹

  • Group: {$KUBE.API.URL}의 IP : Kubernetes/Components: Kubelet
  • Item tag: component: pod
  • Item 예시: Namespace [argocd] Pod [argocd-applicationset-controller-5867d7759-dksldk]: CPU: Usage seconds, total

이 쿼리를 통해 Pod의 CPU 사용량(Usage seconds, total) 을 시각화할 수 있다.
이 역시 변수를 통해 네임스페이스/파드 단위의 동적 분석이 가능하도록 설정한다.


🧮 변수 만들기

1️⃣ Group 필터링

  • (이전 단계의 Group 변수 재사용)

2️⃣ Item tag 필터링 (component: pod)

  • Name: itemtag
  • Hide: Variable
  • Query Type: item tag
  • Group: $Group
  • Host: /.*/
  • Item Tag: /^\s*component\s*:\s*pod\s*$/

3️⃣ Item 필터링 (네임스페이스 분류용)

이 단계는 CPU 데이터가 네임스페이스/파드별로 방대하기 때문에,
네임스페이스 라벨을 앞단에 따로 만들어 분류하기 위한 설정이다.

  • Name: cpu_namespace
  • Label: 네임스페이스 [CPU]
  • Query Type: item
  • Group: $Group
  • Host: /.*/
  • Item Tag: $itemtag
  • Item: /^Namespace\s*\[([^\]]+)\].*CPU: Usage seconds, total$/
  • Regex: ^Namespace \[(?<text>[^\]]+)\].*
  • Multi-value: ✅
  • Include All option: ✅

4️⃣ Item 필터링 (Usage seconds, total)

Usage seconds, total은 실질적인 Pod CPU 사용량을 나타내는 값이다.

  • Name: pod_cpu
  • Label: POD별 CPU 사용량
  • Query Type: item
  • Group: $Group
  • Host: /.*/
  • Item Tag: $itemtag
  • Item: /.*/
  • Regex: ^(Namespace \[(?:${cpu_namespace:regex})\]\s+Pod \[[^\]]+\]\s+CPU: Usage seconds, total)$
  • Multi-value: ✅
  • Include All option: ✅

📊 패널 생성

1️⃣ POD별 CPU 사용량

  • Visualization: Time series
  • Title: POD별 CPU 사용량
  • Mode: Table / Right (옵션 선택)
  • Values: Min / Mean / Max / Last*
  • Query Type: Metrics
    • Group: $Group
    • Host: /.*/
    • Item Tag: $cpu_namespace
    • Item: $pod_cpu

2️⃣ POD별 Memory 사용량

  • Visualization: Time series
  • Title: POD별 Memory 사용량
  • Mode: Table / Right (옵션 선택)
  • Values: Min / Mean / Max / Last*
  • Query Type: Metrics
    • Group: $Group
    • Host: /.*/
    • Item Tag: $namespace
    • Item: $memory

💡 Tip
대시보드에서 네임스페이스나 지표 값을 All 또는 다중 선택한 상태에서
시간 범위를 Last 6 hours 등으로 설정하면
데이터 처리량(I/O)이 과도해 No data가 표시될 수 있다.
→ 시간 범위를 줄이거나, 네임스페이스별로 구분해 분석하는 것을 권장한다.

관련 글 :

🛠 마지막 수정일: 2025.11.12

ⓒ 2025 엉뚱한 녀석의 블로그 [quirky guy's Blog]. 본문 및 이미지를 무단 복제·배포할 수 없습니다. 공유 시 반드시 원문 링크를 명시해 주세요.
ⓒ 2025 엉뚱한 녀석의 블로그 [quirky guy's Blog]. All rights reserved. Unauthorized copying or redistribution of the text and images is prohibited. When sharing, please include the original source link.

💡 도움이 필요하신가요?
Zabbix, Kubernetes, 그리고 다양한 오픈소스 인프라 환경에 대한 구축, 운영, 최적화, 장애 분석이 필요하다면 언제든 편하게 연락 주세요.

📧 Contact: jikimy75@gmail.com
💼 Service: 구축 대행 | 성능 튜닝 | 장애 분석 컨설팅


💡 Need Professional Support?
If you need deployment, optimization, or troubleshooting support for Zabbix, Kubernetes, or any other open-source infrastructure in your production environment, feel free to contact me anytime.

📧 Email: jikimy75@gmail.com
💼 Services: Deployment Support | Performance Tuning | Incident Analysis Consulting