DEV Community

Cover image for Backing up Prometheus using TSDB Snapshots : Kubernetes/OpenShift
karan singh
karan singh

Posted on

Backing up Prometheus using TSDB Snapshots : Kubernetes/OpenShift

These are my quick-and-dirty brain-dump notes to myself on how to backup prometheus database running on k8s or OpenShift

  • Get Token for API Authentication and Prometheus API Route URL
 oc whoami -t oc get route -n openshift-monitoring | grep -i prometheus 
Enter fullscreen mode Exit fullscreen mode
  • Run sample curl request
 curl -ks -H ‘Authorization: Bearer 0za4LjX9xPcqDjhWaufkgcQGo4grqA7ws4zvHrqgfY4’ ‘[https://prometheus-k8s-openshift-monitoring.apps.ocp4.cp4d.com/api/v1/query?query=ALERTS'](https://prometheus-k8s-openshift-monitoring.apps.ocp4.cp4d.com/api/v1/query?query=ALERTS') | python -m json.tool 
Enter fullscreen mode Exit fullscreen mode
  • Create TSDB Snapshot
 curl -X ‘POST’ -ks -H ‘Authorization: Bearer 0za4LjX9xPcqDjhWaufkgcQGo4grqA7ws4zvHrqgfY4’ ‘[https://prometheus-k8s-openshift-monitoring.apps.ocp4.cp4d.com/api/v2/admin/tsdb/snapshot'](https://prometheus-k8s-openshift-monitoring.apps.ocp4.cp4d.com/api/v2/admin/tsdb/snapshot') | python -m json.tool 
Enter fullscreen mode Exit fullscreen mode
  • You might get an error, so you first need to enable Admin APIs
 { “error”: “Admin APIs are disabled”, “message”: “Admin APIs are disabled”, “code”: 14 } 
Enter fullscreen mode Exit fullscreen mode
  • Enable AdminAPI
 oc -n openshift-monitoring patch prometheus k8s \ — type merge — patch ‘{“spec”:{“enableAdminAPI”:true}}’ 
Enter fullscreen mode Exit fullscreen mode
  • Verify Admin API is enabled
 oc describe po prometheus-k8s-1 | grep -i admin — web.enable-admin-api 
Enter fullscreen mode Exit fullscreen mode
  • Hit TSDB snapshot API to take snapshot
 curl -X ‘POST’ -ks -H ‘Authorization: Bearer 0za4LjX9xPcqDjhWaufkgcQGo4grqA7ws4zvHrqgfY4’ ‘[https://prometheus-k8s-openshift-monitoring.apps.ocp4.cp4d.com/api/v2/admin/tsdb/snapshot'](https://prometheus-k8s-openshift-monitoring.apps.ocp4.cp4d.com/api/v2/admin/tsdb/snapshot') | python -m json.tool 
Enter fullscreen mode Exit fullscreen mode
 { “name”: “20210512T162601Z-33415dbd315ae6af” } 
Enter fullscreen mode Exit fullscreen mode
  • Find the snapshot and copy it locally

  • The default folder is /prometheus/snapshots/ but you can find the data folder by finding the --storage.tsdb.path config in your deployment.

 curl -X ‘POST’ -ks -H ‘Authorization: Bearer 0za4LjX9xPcqDjhWaufkgcQGo4grqA7ws4zvHrqgfY4’ ‘[https://prometheus-k8s-openshift-monitoring.apps.ocp4.cp4d.com/api/v1/admin/tsdb/snapshot'](https://prometheus-k8s-openshift-monitoring.apps.ocp4.cp4d.com/api/v1/admin/tsdb/snapshot') | python -m json.tool 
Enter fullscreen mode Exit fullscreen mode
  • List the the snapshot directory
 oc -n openshift-monitoring exec -it prometheus-k8s-0 -c prometheus — /bin/sh -c “ls /prometheus/snapshots/20210512T162601Z-33415dbd315ae6af” 
Enter fullscreen mode Exit fullscreen mode
  • Copy the Snapshot from prometheus container to local machine
 oc project openshift-monitoring oc rsync prometheus-k8s-0:/prometheus/snapshots/ /home/prometheus 
Enter fullscreen mode Exit fullscreen mode

And this is how to back Prometheus Snapshot to a local machine

Top comments (0)