从 prometheus 无缝迁移到 VictoriaMetrics
本文以安装单机版 VictoriaMetrics 为例,介绍如何从 prometheus 无缝迁移到 VictoriaMetrics。 本文默认已经拥有过 prometheus 对应的配置文件。
安装 VictoriaMetrics
下载对应系统版本的 victoriametrics
以及 vmctl
,注意不要下载 enterprise
版本
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.101.0/victoria-metrics-linux-amd64-v1.101.0.tar.gz
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.101.0/vmutils-linux-amd64-v1.101.0.tar.gz
tar -zxvf victoria-metrics-linux-amd64-v1.101.0.tar.gz
tar -zxvf vmutils-linux-amd64-v1.101.0.tar.gz
拷贝一份之前的 prometheus 配置文件,只保留scrape_configs
,其他内容全部删除。
一个简单的例子
scrape_configs:
- job_name: "node-exporter"
static_configs:
- targets: [
"192.168.2.1:9100"
]
增加 systemd
文件,sudo vim /etc/systemd/system/victoriametrics.service
填入一下内容
[Unit]
Description=VictoriaMetrics
After=network.target
[Service]
ExecStart=<你的victoriametrics解压目录>/victoria-metrics-prod -storageDataPath=<数据存放的路径> -promscrape.config=<你拷贝修改之后的prometheus配置文件> -httpListenAddr=0.0.0.0:8428
Restart=always
RestartSec=2
[Install]
WantedBy=multi-user.target
执行 sudo systemctl enable --now victoriametrics && sudo systemctl status victoriametrics
如果是 running 就说明启动成功了。
prometheus 导出快照
修改原来的 prometheus 的配置文件,增加
remote_write:
- url: http://<部署VictoriaMetrics的ip>:8428/api/v1/write
并且在 prometheus 的启动参数中增加 --web.enable-admin-api
,然后重启 prometheus。
执行下面命令,制作快照。
curl -XPOST <你的prometheus ip>:9090/api/v1/admin/tsdb/snapshot
{"status":"success","data":{"name":"20240621T145321Z-7ae5efe6fc59465f"}}
之后将在你的 prometheus 的数据目录下的 snapshots
文件夹,找到 20240621T145321Z-7ae5efe6fc59465f
文件夹
将这个快照目录 (data/snapshots) 复制到 victoriametrics 的机器上 (如果是在同一个机器上可以忽略)
使用 vmctl 导入数据
./vmctl-prod prometheus --prom-snapshot=<刚刚导出的快照目录 20240621T145321Z-7ae5efe6fc59465f> --vm-addr=<victoriametrics的ip:8428>
./vmctl-prod prometheus --prom-snapshot 20240621T145321Z-7ae5efe6fc59465f --vm-addr=http://127.0.0.1:8428
Prometheus import mode
Prometheus snapshot stats:
blocks found: 24;
blocks skipped by time filter: 0;
min time: 1717588800473 (2024-05-20T20:00:00+08:00);
max time: 1718981610787 (2024-06-21T22:53:30+08:00);
samples: 6806426699;
series: 708694.
Found 24 blocks to import. Continue? [Y/n]
输入 y
就开始导入数据了。
导入成功之后就可以把 prometheus 停掉了,如果配置了 grafana,将之前的 prometheus 地址换为<部署VictoriaMetrics的ip>:8428
即可。
参考
https://medium.com/@romanhavronenko/victoriametrics-how-to-migrate-data-from-prometheus-d44a6728f043 https://www.robustperception.io/taking-snapshots-of-prometheus-data/