ᕕ( ᐛ )ᕗ Jimyag's Blog

从 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/

#prometheus #VictoriaMetrics