Grafanaで過去データを同時に表示する

保守しているサーバーの増強が必要かどうかを判断する際、
過去のデータと比較したいということがあるかと思います。
今回Grafanaでいい感じに表示する方法を調べてみたのでメモします。

検証環境

Rancherで構築したラズパイRKE2クラスタにMonitoringをインストールしました。
構築手順は こちら が参考になると思います。

root@k8s1:~# kubectl get node -o wide
NAME   STATUS   ROLES                       AGE    VERSION           INTERNAL-IP    EXTERNAL-IP   OS-IMAGE           KERNEL-VERSION     CONTAINER-RUNTIME
k8s1   Ready    control-plane,etcd,master   2d5h   v1.28.10+rke2r1   192.168.0.51   <none>        Ubuntu 24.04 LTS   6.8.0-1007-raspi   containerd://1.7.11-k3s2
k8s2   Ready    worker                      2d5h   v1.28.10+rke2r1   192.168.0.52   <none>        Ubuntu 24.04 LTS   6.8.0-1004-raspi   containerd://1.7.11-k3s2
k8s3   Ready    worker                      2d4h   v1.28.10+rke2r1   192.168.0.53   <none>        Ubuntu 24.04 LTS   6.8.0-1007-raspi   containerd://1.7.11-k3s2
root@k8s1:~# helm list -n cattle-monitoring-system
NAME                  	NAMESPACE               	REVISION	UPDATED                                	STATUS  	CHART                                   	APP VERSION
rancher-monitoring    	cattle-monitoring-system	1       	2024-07-14 05:20:40.715973065 +0000 UTC	deployed	rancher-monitoring-103.1.1+up45.31.1    	v0.65.1    
rancher-monitoring-crd	cattle-monitoring-system	1       	2024-07-14 05:18:44.322859123 +0000 UTC	deployed	rancher-monitoring-crd-103.1.1+up45.31.1

grafanaのバージョンは9.1.5でした。

root@k8s1:~# kubectl exec -it rancher-monitoring-grafana-577cb9ffd4-5dp2l -n cattle-monitoring-system -- grafana-server -v
Version 9.1.5 (commit: df015a9301, branch: HEAD)

タイムシフト機能

ググったらまずこの機能が出てきました。
ドキュメントはこちら

まずはGrafanaでダッシュボードを作成するためにログインします。
Rancherのドキュメント に書いてあるとおりadmin/prom-operatorでログインできます。

適当にメトリクスを表示します。
今回はノードのCPU使用率にしました。

そしてドキュメントの通り、Query optionsからTime shiftを設定します。

grafana_timeshift_001.png

今回は3hを設定したのですが、設定していない場合と比べて、
指定したtime rangeからさらに3時間過去のメトリクスが表示されていることがわかります。

grafana_timeshift_002.png

同じパネルに過去データを同時に表示する

みたところタイムシフト機能は1つのパネル全体に影響するようです。
なるべく見せるグラフは少なくしたく、1つのパネルに現在と過去二つのグラフを表示したい
と思ったら同じことを考えた人が issue あげてました。
こちらのコメント によるとデータソース側のクエリでやる方が良いとのことです。

Rancher MonitoringではPrometheusを使っているため offset を使います。

例えば以下のようなクエリでノードのCPU使用率を3時間ずらすグラフを表示してみます。
加えて、そのままだと見づらいので凡例に3時間前という文字列を追加して、
OverrideでBのクエリを点線で表示します。

grafana_timeshift_003.png

Cloud Monitoringのダッシュボードも過去データは点線ですしね。
いい感じです。

grafana_timeshift_004.png

3時間前のグラフだけ表示すると、3時間タイムシフトさせたグラフと同じグラフが
点線で表示されていることがわかります。

grafana_timeshift_005.png