タイトルまま。 いい加減Grafana力を高めようと最近Grafonnetに入門し、Process Exporterをソースとした有益なダッシュボードを作りたいなーとあれこれ試していた過程でTreemapプラグインを発見し、Datadogで以前みかけたメモリマップみたいなビュー作ったら良さそうだなーということで作ってみた。
環境
Process Exporterは2環境で動かしていてOSはそれぞれUbuntu xenial、bionic
- Grafana 7.2.0
- Treemap plugin 0.5.0
- process-exporter 0.7.5
Process Exporterの設定
Process Exporterの設定はちょっと癖のある感じだが、どの単位でグルーピングしたいか?を定義して上から順に試行してマッチしたところにまとめられる、みたいな動作だと思っている。
のでこれはまとめたいみたいなものを上の方に条件として書いていき、最後にどこにもマッチしなかったら実行ユーザー単位でまとめるみたいな設定を書いている。
process_names: - comm: - php-fpm7.2 - mysqld - memcached - apache2 - name: "exporters" cmdline: - '/usr/local/bin/.+[_-]exporter' - name: "{{.Username}} processes" cmdline: - '.+'
exporter系はまとめたいなーとかそういう扱いをしているが、とりあえず実行ユーザー単位でまとめておけばカーディナリティも爆発せず割と推測できるレベルにまとまるのであまりがんばらなくてもいいんじゃないかと思う(ubuntuのデフォ環境だったらwww-dataだったらapacheの子プロセスだよねーとか)。
process exporterでまとまった結果はプロセス数もメトリクスとして持っているので、たとえば「長期的にapacheの1プロセスあたりが使うメモリが増えてきている」みたいな傾向をみたりするのにも使えるのでうまく使えばベンリなんでないかと。
グラフの定義
ダッシュボードが二個混在していて分かりづらいですがこんな感じで。 Treemapはtextとnumericの値をもったtable的な構造を期待しているので、Rangeとしての結果ではなくInstantオプションを指定して最新の値のみを使うように。
↑はgrezzlyでapplyすることを前提にしているのでいちおう出力結果のjsonはこんな感じ。
2021/2/14 追記
ある程度汎用的に定義しなおしてgrafana.comの方にあげてみました