— Grafana 連携による Pod CPU・Memory 使用量の動的ダッシュボード実装
📘 概要
以前にも関連内容を扱った記事があるが、より深いレベルでガイドをまとめる必要があると感じ、本記事を作成した。参考になれば幸いだ。
Zabbix で Kubernetes を監視するために Kubernetes Kubelet by HTTP テンプレートを適用すると、
マクロ {$KUBE.API.URL} に設定された IP を基準として、次のようなホストグループが自動生成される。
{$KUBE.API.URL} の IP : Kubernetes/Components: Kubelet
本記事では、そのデータをもとに Pod CPU と Pod 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 が表示されることがある。
その場合は次の手順で API キャッシュをクリアする。
Home → Connections → Data Sources → Zabbix Datasource → Save & Test
それでも解決しない場合はプラグイン更新後に 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) を可視化できる。
こちらも同様に、ネームスペース/Pod 単位の動的分析が可能となる。
🧮 変数作成
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 データはネームスペース/Pod ごとに膨大となるため、
まずネームスペースラベルを抽出する変数を作成する。
| 項目 | 値 |
|---|---|
| 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
ダッシュボードで Namespace や指標値を All または 複数選択した状態で
時間範囲を “Last 6 hours” など広く設定すると、
データ量(I/O)が多すぎて No data が表示される場合がある。
→ 時間範囲を短くするか、Namespace 単位で分けて分析することを推奨。
🔗 関連記事
🛠 마지막 수정일: 2025.11.14
💡 お困りですか?
Zabbix、Kubernetes、各種オープンソースインフラの構築・運用・最適化・障害解析が必要であれば、いつでもご連絡ください。
📧 メール: jikimy75@gmail.com
💼 サービス: 導入支援 | 性能チューニング | 障害解析コンサルティング
답글 남기기
댓글을 달기 위해서는 로그인해야합니다.