とにかく雑

とにかく雑に思い立ったことを書く。内容は私自身の見解であり、所属組織の立場・戦略・意見を代表するものではありません。

OpenShift Cluster Monitoring の Prometheus のデータを Export/Import する

これが実現できると一番スマートそうだなと思った。
visibilityspots.org


だが、Cluster Monitoring の Prometheus では admin API が無効化されていた。まぁ想定はしていた。

$ oc exec -it -n openshift-monitoring prometheus-k8s-0 -- sh

sh-4.4$ curl -X POST http://localhost:9090/api/v1/admin/tsdb/snapshot
{"status":"error","errorType":"unavailable","error":"admin APIs disabled"}


仕方がないので Prometheus のデータを tar.gz で固めて持ってくることにした。固めるのにかなり時間が掛かる。

$ oc exec -it -n openshift-monitoring prometheus-k8s-0 -- sh

sh-4.4$ tar -zcvf /tmp/prometheus.tar.gz /prometheus
tar: Removing leading `/' from member names
/prometheus/
/prometheus/01FK3XJ471YNVXFRT1PV5VHPTP/
/prometheus/01FK3XJ471YNVXFRT1PV5VHPTP/chunks/
・・・
・・・
・・・

sh-4.4$ ls /tmp/
ks-script-rgpe088e  ks-script-zgupbl05	prometheus.tar.gz


Prometheus のバージョンも調べておく。

sh-4.4$ /bin/prometheus --version
prometheus, version 2.26.1 (branch: rhaos-4.8-rhel-8, revision: 5e146b2e4b9d96a952b9412dc20ce3fabfa2bd5e)
  build user:       root@d43b8d11b98a
  build date:       20210813-03:01:55
  go version:       go1.16.6
  platform:         linux/amd64


oc cp でローカルに tar.gz で固めたものを持ってくる。持ってくるのにかなり時間が掛かる。

$ oc cp prometheus-k8s-0:/tmp/prometheus.tar.gz /my/local/pc/prometheus.tar.gz
Defaulting container name to prometheus.
tar: Removing leading `/' from member names


ローカルで同一バージョンの Prometheus をデータをコピーした領域をマウントする形で起動する。

$ docker run -d --name prometheus -v /my/local/pc/prometheus:/prometheus -p 9090:9090 prom/prometheus:v2.26.1
002bc4b65116d370f9998455e38c55d88d28d2bb26b1ebddacba38abfbcb10b4


一応ちゃんとデータを見られる。そこそこ使い所ありそう。