概要
Prometheus + GrafanaではPromQLを使って柔軟なパネルが作成できる一方、作り方が複雑になりがちです。
今回は基本的なパネルの作り方を説明します。
環境
- Grafana 6.2.5
- Prometheus 2.11.1
パネル
Grafanaのダッシュボードのパネルは大きく10あります。
今回はよく使う
- グラフ
- シングルスタット
の2つを説明します。
グラフパネル
名前の通りグラフを表示するためのパネルです。一番良く使うことになります。
例としてプロセスのメモリを表示します。

Query
クエリを設定します。

process_resident_memory_bytesを指定します。このように補完が効いて便利ですね。
指定するとすぐに上部グラフに反映されます。

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

Visualization
左のVisualizationでAxesのLeft Y UnitをData(Metric)/bytesに設定します。

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

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

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

シングルスタットパネル
シングルスタットパネルは、単一の時系列データの値を表示します。
例としてprometheus_tsdb_head_seriesというPrometheusがインジェストしている時系列データの数を表示します。
Query
prometheus_tsdb_head_seriesを指定します。

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

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

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

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

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

Variablesをクリック

以下のように設定します。
| 項目 | 値 |
|---|---|
| Data source | Prometheus |
| Refresh | On Time Range Change |
| Query | node_network_receive_bytes_total |
| Regex | .*device="(.*?)".* |
※このQueryやRegexはプルダウンで出す選択肢を抽出するためのものです

Preview of valuesで実際に選択肢になりうる値が表示されます。
Dashboardに戻ると、テンプレート変数がプルダウンで選択できるようになっています。

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

rate(node_network_receive_bytes_total{device="$NIC"}[1m])と設定します。変数は$で表現できます。補完も効いてます。
NICが凡例として表示されるよう、Legendを{{device}}にし、AxesのLeft YのUnitをdata rate - bytes/secにします。
表示
すると以下のようにNIC毎に切り替えられるようになりました。
eth0

eth1

lo

Duplicate
先程はネットワークINのグラフを作りました。
今度はネットワークOUTのグラフを作りましょう。
複製をクリックすれば簡単に作れます。

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

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

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