2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Grafanaで複数の指標からテーブルを作る話

Last updated at Posted at 2025-12-09

@buzztaiki です。Qiita に記事を書くのは5年ぶりくらいです。

さて、Grafana で kubernetes-mixin を使って Kubernetes を監視してる人なら見た事があると思いますが、この mixin が提供するダッシュボードには複数の指標を組み合わせて作られたテーブルがあります。↓こんなやつです。

image.png

よくよく考えると PromQL では join しても値は一つにしかならないので、どうやって実現しているのか不思議に思う人もいるかもしれません。実は Grafana 側で join させるような事をやっているんですが、世の中を探してもあまり HowTo 的な記事があまり見つかりません。見つからないので、この記事では Grafana で複数の指標からテーブルを作る方法について解説してみます。

この記事の対象になる人

こんな人を対象にしてます。Grafana が分からなかったり PromQL が書けない人は対象外です。

  • Grafana で時系列グラフのダッシュボードが作れる
  • PromQL が書ける
  • 複数の指標を組み合わせたテーブルを作りたい、または仕組みに興味がある

この記事で使っているコンポーネントのバージョン

  • kube-prometheus-stack 79.11.0
    • Grafana: 12.3.0
    • kubernetes-mixin: 1.3.0

この記事で作るダッシュボード

この記事では 「Kubernetes / Compute Resources / Namespace (Workloads)」のダッシュボードを全 namespace 分表示するテーブルがあるダッシュボードを作ってみます。最終的にはこんなものができます。

image.png

複数指標からなるテーブルの作り方

それでは作ってみましょう。ダッシュボードを作ったら、まずは変数を定義します。datasource と namespace を選択できるようにしておきます。

image.png

Visualization を追加して [Table] を選びます。

image.png

まずは Pod 数 のクエリーを追加します。設定は以下のように:

  • 名前: POD_COUNT
  • Format: Table
  • Type: Instant
  • クエリー:
    count(namespace_workload_pod:kube_pod_owner:relabel{namespace=~"$namespace"}) by (namespace, workload, workload_type)
    

そうするとこうなります。

image.png

次に CPU 使用量のクエリーを追加します:

  • 名前: CPU_USAGE
  • Format: Table
  • Type: Instant
  • クエリー:
    sum(
      max by (namespace, pod, container)(rate(container_cpu_usage_seconds_total{namespace=~"$namespace", image!=""} [5m]))
      * on(namespace, pod)
        group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{namespace=~"$namespace"}
    ) by (namespace, workload, workload_type)
    

このままだと以下のようになって、CPU 使用量がテーブルに出てこないですね:

image.png

ここで Grafana の機能を使います。[Transform] タブで [Merge series/tables] を選択してください:

image.png
image.png

Merge series/tables は複数のクエリーから共通のラベルを外部結合してくれるやつです。詳細は 公式ドキュメント を見てください。

Transform を追加すると、Pod 数の横に CPU 使用量が出てきました:

image.png

このまま CPU 要求、CPU 要求% も追加します:

  • CPU 要求
    • 名前: CPU_REQ
    • Format: Table
    • Type: Instant
    • クエリー:
      sum(
        max by (namespace, pod, container)(kube_pod_container_resource_requests{namespace=~"$namespace", resource="cpu"})
        * on(namespace, pod)
          group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{namespace=~"$namespace"}
      ) by (namespace, workload, workload_type)
      
  • CPU 要求%:
    • 名前: CPU_REQ%
    • Format: Table
    • Type: Instant
    • クエリー:
      sum(
        max by (namespace, pod, container)(rate(container_cpu_usage_seconds_total{namespace=~"$namespace", image!=""} [5m]))
        * on(namespace, pod)
          group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{namespace=~"$namespace"}
      ) by (namespace, workload, workload_type)
      /
      sum(
        max by (namespace, pod, container)(kube_pod_container_resource_requests{namespace=~"$namespace", resource="cpu"})
        * on(namespace, pod)
          group_left(workload, workload_type) namespace_workload_pod:kube_pod_owner:relabel{namespace=~"$namespace"}
      ) by (namespace, workload, workload_type)
      

これで複数指標からなるテーブルができました。ここまででこの記事の目的は達成できました。分かってしまえば簡単ですね。

image.png

見た目を整える

パネルの field overrides を使ってカラムごとに見た目を整えます。が、伝えたい事は伝えたし、スクショが面倒くさくなっちゃったので、これ をインポートしてからパネルで Show only overrides してください。

オーバーライドしてる属性だけ書いておくとこんな所です:

  • 項目名
  • 数値のフォーマット
  • グラフ表示
    • Cell type: セルをグラフにしたりする
      • Gauge: グラフを出す
    • Max: グラフの位置を決める
    • Thresholds: 赤くする閾値
  • リンク
    • Data links: 行の値を使って他のダッシュボードにリンクさせる

おわりに

この記事では Grafana で複数の指標からテーブルを作る方法についてざっと解説してみました。Grafana の視覚化機能は色々できて楽しいんですが、公式に分かりやすい解説があまりないのが困りものですね。色々触って試してみてください。

この記事は Sensyn Robotics Advent Calendar 2025 の記事でした。明日は @andy1dx さんの「DJI Dockでクラウド越しにドローンをリアルタイム制御する方法(MQTT編)」です。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?