【Prometheus】数据备份恢复

1,986 阅读1分钟

Prometheus 数据备份

Prometheus 数据备份有两种方式:

  • 全量备份,data 目录全量数据复制;
  • 快照备份,利用 Prometheus 提供的 API 接口。 如果要使用 Prometheus 提供的 API,需要在启动 prometheus 时,启用参数 --web.enable-admin-api

备份的 API 为 POST /api/v1/admin/tsdb/snapshot

自动备份脚本:

#!/bin/bash
# prometheus_install_dir:Prometheus 安装目录
# prometheus_backup_dir:Prometheus 备份数据存放目录

prometheus_data_dir=[prometheus_install_dir]/data/snapshots
prometheus_backup_dir=[prometheus_backup_dir]
prometheus_snapshot_url=http://localhost:9090/api/v1/admin/tsdb/snapshot

backup_file_name=`date '+%Y%m%d%H%M%S'`

response=$(curl -s -X POST ${prometheus_snapshot_url})

status=$( jq -r  '.status' <<< "${response}" ) 

if [ $status == "success" ]; then
	name=$( jq -r '.data.name' <<< "${response}" )
	mv $prometheus_data_dir/$name $prometheus_backup_dir/$backup_file_name 
else
	echo "promtheus backup error"
fi

Prometheus 数据恢复

停止 Prometheus 服务,将备份文件放入 Prometheus 安装目录

数据恢复脚本:

#!/bin/bash
# prometheus_install_dir:Prometheus 安装目录
# prometheus_backup_dir:Prometheus 备份数据存放目录
# backup_file_name:需要恢复的数据文件

prometheus_data_dir=prometheus_data_dir=[prometheus_install_dir]/data
prometheus_backup_dir=[prometheus_backup_dir]
backup_file_name=[backup_file_name]

rm -rf $prometheus_data_dir

cp -R $prometheus_backup_dir/$backup_file_name $prometheus_data_dir