Carpe Diem

備忘録

Grafanaのパネルの作り方

概要

Prometheus + GrafanaではPromQLを使って柔軟なパネルが作成できる一方、作り方が複雑になりがちです。

今回は基本的なパネルの作り方を説明します。

環境

  • Grafana 6.2.5
  • Prometheus 2.11.1

パネル

Grafanaのダッシュボードのパネルは大きく10あります。

  • グラフ
  • シングルスタット
  • ゲージ
  • バーゲージ
  • テーブル
  • テキスト
  • ヒートマップ
  • アラートリスト
  • ダッシュボードリスト
  • プラグインリスト

今回はよく使う

  • グラフ
  • シングルスタット

の2つを説明します。

グラフパネル

名前の通りグラフを表示するためのパネルです。一番良く使うことになります。
例としてプロセスのメモリを表示します。

f:id:quoll00:20190716082929p:plain

Query

クエリを設定します。

f:id:quoll00:20190716083016p:plain

process_resident_memory_bytesを指定します。このように補完が効いて便利ですね。

指定するとすぐに上部グラフに反映されます。

f:id:quoll00:20190716084313p:plain

Legend(凡例)

Legendにはjob名が凡例として表示されるように{{job}}と入れておきます。

f:id:quoll00:20190716084609p:plain

Visualization

左のVisualizationAxesLeft Y UnitData(Metric)/bytesに設定します。

f:id:quoll00:20190716084809p:plain

General

パネル名をMemory Usageにします。

f:id:quoll00:20190716085007p:plain

Save

設定が完了したら上部にあるSaveボタンで保存。

f:id:quoll00:20190716085118p:plain

以下のようなグラフができました。

f:id:quoll00:20190716085401p:plain

シングルスタットパネル

シングルスタットパネルは、単一の時系列データの値を表示します。

例としてprometheus_tsdb_head_seriesというPrometheusがインジェストしている時系列データの数を表示します。

Query

prometheus_tsdb_head_seriesを指定します。

f:id:quoll00:20190716090110p:plain

Visualization

Visualizationでグラフパネルになっているプルダウンをシングルスタットパネルに選択し直します。

f:id:quoll00:20190716090157p:plain

デフォルトだと平均値になっていますが、今回は現在値を知りたいのでStatCurrentに変更。

f:id:quoll00:20190716090351p:plain

また文字が小さいのでFont Sizeも変更

f:id:quoll00:20190716090615p:plain

Save

タイトルをGeneralで変更し、Saveすると以下のように表示されました。

f:id:quoll00:20190716090704p:plain

テンプレート変数

同じダッシュボードを変数で切り替えられるようにしたい時はテンプレート変数を使います。

例としてNIC毎にトラフィック量を見れるパネルを作ります。

Variables

上部のSettingから

f:id:quoll00:20190716091555p:plain

Variablesをクリック

f:id:quoll00:20190716091626p:plain

以下のように設定します。

項目
Data source Prometheus
Refresh On Time Range Change
Query node_network_receive_bytes_total
Regex .*device="(.*?)".*

※このQueryRegexはプルダウンで出す選択肢を抽出するためのものです

f:id:quoll00:20190716091912p:plain

Preview of valuesで実際に選択肢になりうる値が表示されます。

Dashboardに戻ると、テンプレート変数がプルダウンで選択できるようになっています。

f:id:quoll00:20190716092207p:plain

グラフパネル

作った変数を用いてグラフパネルを作成します。

f:id:quoll00:20190716094346p:plain

rate(node_network_receive_bytes_total{device="$NIC"}[1m])と設定します。変数は$で表現できます。補完も効いてます。

NICが凡例として表示されるよう、Legendを{{device}}にし、AxesのLeft YのUnitをdata rate - bytes/secにします。

表示

すると以下のようにNIC毎に切り替えられるようになりました。

eth0

f:id:quoll00:20190716093040p:plain

eth1

f:id:quoll00:20190716093118p:plain

lo

f:id:quoll00:20190716093131p:plain

Duplicate

先程はネットワークINのグラフを作りました。
今度はネットワークOUTのグラフを作りましょう。

複製をクリックすれば簡単に作れます。

f:id:quoll00:20190716094129p:plain

Query

Queryをrate(node_network_transmit_bytes_total{device="$NIC"}[1m])にし、TitleをBytes Transmittedにします。

f:id:quoll00:20190716094927p:plain

表示

このようにNIC毎にネットワークのIN/OUTが表示されるようになりました。

f:id:quoll00:20190716095008p:plain

まとめ

Grafanaのパネルの基本的な作り方を説明しました。
非常に多くの設定があり全てを把握するのは難しいと思うので、自分で触ったり公開されているダッシュボードを参考にしながら理解していくと良いと思います。

参考