下载vmctl包
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/download/v1.92.0/vmutils-linux-amd64-v1.92.0.tar.gz
-rwxr-xr-x 1 tom tom 16M 7月 28 06:09 vmagent-prod
-rwxr-xr-x 1 tom tom 24M 7月 28 06:09 vmalert-prod
-rwxr-xr-x 1 tom tom 9.2M 7月 28 06:09 vmauth-prod
-rwxr-xr-x 1 tom tom 32M 7月 28 06:09 vmbackup-prod
-rwxr-xr-x 1 tom tom 32M 7月 28 06:09 vmrestore-prod
-rwxr-xr-x 1 tom tom 28M 7月 28 06:09 vmctl-prod
-rwxr-xr-x 1 tom tom 21M 7月 28 06:39 victoria-metrics-prod
拍摄普罗米修斯数据的快照
由于普罗米修斯基本上在一台机器上运行,有些人可能希望备份他们的数据。在普罗米修斯1.x中,这是一个缓慢而破坏性的过程,需要普罗米修斯完全重新启动。好消息是,由于其新的存储引擎,Prometheus 2.1 有更好的方法来做到这一点。
要使用它,您必须在运行 Prometheus 时启用管理 API 端点:
[root@vms21 prometheus]# /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus2.yml --storage.tsdb.path=/data1 --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries --web.listen-address=0.0.0.0:9091 --web.enable-lifecycle --web.enable-admin-api
然后,您可以使用简单的HTTP POST请求来请求快照:
[root@vms21 prometheus]# curl -XPOST 127.0.0.1:9091/api/v1/admin/tsdb/snapshot
{"status":"success","data":{"name":"20230728T092101Z-24c0d39ff846ee1e"}}
几秒钟后,它在这里返回了 JSON 对象中新快照的名称。如果您在目录下查看,您将看到以下快照:snapshotsdata
[root@vms21 prometheus]# cd /var/lib/prometheus/snapshots/
[root@vms21 snapshots]# ls
20230730T092611Z-3c068cc1dc8fdb4a
然后,您可以将此目录复制到您喜欢的任何位置。
快照由现有块的硬链接和当前打开块的转储组成。由于使用了硬链接,这意味着旧块的快照不会占用额外的磁盘空间,因为磁盘上只保留了一个副本,但是如果您更改它们、它们的权限或它们的用户/组,您可能会破坏 Prometheus。完成后,您可以创建快照目录,因为虽然快照最初占用的额外磁盘空间很少,但一旦原始块被删除/压缩,快照就会保持该磁盘空间的使用。rm -rf
要使用快照,请指向它。--storage.tsdb.path
通过普罗米修斯数据快照来进行传输
[root@vms21 ~]# ./vmctl-prod prometheus --prom-snapshot=/var/lib/prometheus/snapshots/20230730T092611Z-3c068cc1dc8fdb4a/ --vm-addr=http://192.168.26.176:8480 --vm-concurrency=6 --vm-account-id=0 -vm-batch-size=200000
Prometheus import mode
Prometheus snapshot stats:
blocks found: 9;
blocks skipped by time filter: 0;
min time: 1690387511013 (2023-07-27T00:05:11+08:00);
max time: 1690709165591 (2023-07-30T17:26:05+08:00);
samples: 17577263;
series: 43178.
Found 9 blocks to import. Continue? [Y/n] y
VM worker 0:↑ 766949 samples/s
VM worker 1:↑ 597822 samples/s
VM worker 2:↑ 593455 samples/s
VM worker 3:↑ 837040 samples/s
VM worker 4:↑ 833090 samples/s
VM worker 5:↑ 591607 samples/s
Processing blocks: 9 / 9 [███████████████████████████████████████████████████████████████████████████] 100.00%
2023/07/30 17:52:07 Import finished!
2023/07/30 17:52:07 VictoriaMetrics importer stats:
idle duration: 2.479055706s;
VM worker 0:↗ 766949 samples/s
VM worker 1:↗ 597822 samples/s
VM worker 2:↗ 593455 samples/s
VM worker 3:↗ 837040 samples/s
VM worker 4:↗ 833090 samples/s
VM worker 5:↗ 591607 samples/s
Processing blocks: 9 / 9 [███████████████████████████████████████████████████████████████████████████] 100.00%
2023/07/30 17:52:07 Total time: 10.258831586s
通过远程读取协议迁移数据
vmctl支持将数据从普罗米修斯迁移到维多利亚计量时间序列数据库的模式。迁移基于读取普罗米修斯快照,这基本上是普罗米修斯数据文件的硬链接。prometheus
--remote-read-src-addr- 要读取的数据源地址;
--vm-addr- 要写入的维多利亚计量地址。对于单节点 VM 通常等于 ,对于群集版本等于 vminsert 组件的标志(例如--httpListenAddr--httpListenAddrhttp://<vminsert>:8480/insert/<accountID>/prometheus);
--remote-read-filter-time-start- RFC3339 格式的时间过滤器,用于选择时间戳等于或高于提供值的时间序列。例如“2020-01-01T20:07:00Z”;
--remote-read-filter-time-end- RFC3339 格式的时间过滤器,用于选择时间戳等于或小于提供值的时间序列。例如“2020-01-01T20:07:00Z”。省略时使用当前时间。
--remote-read-step-interval- 将导出数据拆分为块。有效值为month, day, hour, minute
--vm-account-id=0 这个默认是0
这是使用集群模式
[root@vms21 ~]# ./vmctl-prod remote-read --remote-read-src-addr=http://127.0.0.1:9090 --remote-read-filter-time-start=2023-07-28T00:00:00Z --remote-read-step-interval=hour --vm-addr=http://192.168.26.176:8480 --vm-concurrency=6 --vm-account-id=0
Selected time range "2023-07-28 00:00:00 +0000 UTC" - "2023-07-30 09:19:17.333629645 +0000 UTC" will be split into 58 ranges according to "hour" step. Continue? [Y/n] y
VM worker 0:↑ 271990 samples/s
VM worker 1:↑ 245985 samples/s
VM worker 2:↑ 328802 samples/s
VM worker 3:↑ 360033 samples/s
VM worker 4:↑ 307492 samples/s
VM worker 5:↑ 276064 samples/s
Processing ranges: 58 / 58 [██████████████████████████████████████████████████████████████ █] 100.00%
2023/07/30 17:19:30 Import finished!
2023/07/30 17:19:30 VictoriaMetrics importer stats:
idle duration: 27.351070816s;
time spent while importing: 13.57117662s;
total samples: 17183716;
samples/s: 1266192.05;
total bytes: 382.9 MB;
bytes/s: 28.2 MB;
import requests: 88;
import requests retries: 0;
2023/07/30 17:19:30 Total time: 13.573104718s
迁移大量数据可能会导致远程读取客户端达到超时。当看到超时或错误时,请考虑增加(默认)命令行标志的值。--vm-concurrency 线程