VictoriaMetrics轻量化时序指标监控替代
为什么选择VictoriaMetrics替代Prometheus
很多运维朋友发现Prometheus在监控规模增大后,内存和磁盘占用越来越吃紧。
VictoriaMetrics作为Prometheus兼容的轻量化时序数据库,在同样的数据量下内存消耗可降低10倍以上,并且完全支持PromQL查询。
对于个人服务器、中小企业环境,迁移成本很低。
本文会一步步带你完成从Prometheus到VictoriaMetrics的切换,全程适合零基础操作。
开始迁移前的环境准备
你需要一台Linux服务器(CentOS 7+或Ubuntu 20.04+),并已部署Prometheus服务。
如果没有Prometheus,可以直接用VictoriaMetrics的vmagent代替抓取,但本文采用remote write方式实现无缝过渡。
- 确认服务器有至少1GB空闲内存和10GB可用磁盘
- 开放防火墙端口:VictoriaMetrics默认端口8428,Prometheus remote write端口9090不变
- 备份Prometheus数据和配置文件(很重要)
第一步:安装并启动VictoriaMetrics单机版
VictoriaMetrics提供单机二进制文件,部署最简单。
前往其Github Releases页面下载最新稳定版的Linux amd64压缩包,或直接使用wget:
wget https://github.com/VictoriaMetrics/VictoriaMetrics/releases/latest/download/victoria-metrics-linux-amd64.tar.gz
tar -xzf victoria-metrics-linux-amd64.tar.gz
sudo mv victoria-metrics-prod /usr/local/bin/
创建数据目录并启动:
mkdir -p /var/lib/victoria-metrics
nohup /usr/local/bin/victoria-metrics-prod -storageDataPath /var/lib/victoria-metrics -httpListenAddr :8428 &
启动后访问 http://你的服务器IP:8428 ,看到VictoriaMetrics的Web界面即成功。
第二步:让Prometheus数据写入VictoriaMetrics
修改Prometheus配置文件(通常是/etc/prometheus/prometheus.yml),
在global块或scrape_configs同级添加remote_write目标:
remote_write:
- url: "http://localhost:8428/api/v1/write"
如果VictoriaMetrics不在本机,把localhost换成对应IP。
保存后重新加载Prometheus:
sudo systemctl reload prometheus # 或 curl -X POST http://localhost:9090/-/reload
此时所有新指标都会实时写入VictoriaMetrics。
原有Prometheus数据不会自动迁移,但可以保持Prometheus继续运行,直到你确认新数据稳定后再迁移历史数据。
历史数据迁移可通过vmctl工具完成,本文暂不展开。
第三步:验证数据是否正常迁移
在浏览器打开VictoriaMetrics的查询界面(http://IP:8428/vmui),输入任意PromQL查询,例如:
up
如果能返回结果,说明写入成功。
也可以对比Prometheus和VM的同一个指标值是否一致。
还可以查看存储文件大小:
du -sh /var/lib/victoria-metrics/*
通常VictoriaMetrics的数据压缩率远高于Prometheus,磁盘占用明显减少。
使用中的高频问题与避坑
问题1:Prometheus remote_write报错“server returned HTTP status 400”
原因是VictoriaMetrics版本与Prometheus版本不兼容。建议均使用最新稳定版,或检查API路径是否为/api/v1/write。
问题2:VictoriaMetrics内存仍然很高
VictoriaMetrics默认会缓存最近的数据,可通过启动参数-memory.allowedPercent限制内存使用百分比。例如-memory.allowedPercent=30。
问题3:如何停止Prometheus只留VictoriaMetrics?
确认VictoriaMetrics稳定运行一段时间后,可以修改Prometheus配置去掉remote_write,然后停止Prometheus服务,并让VictoriaMetrics直接抓取targets(使用vmagent或配置Prometheus兼容摸式)。建议保留Prometheus一段时间,直到你完全信任VM的数据完整性。
避坑提醒: 迁移前先在测试环境演练,生产环境务必先备份Prometheus数据目录。
VictoriaMetrics的-storageDataPath目录不要放在系统根分区,避免磁盘写满影响系统。
总结:轻量化监控带来的改变
通过以上几步,你已经成功用VictoriaMetrics接替了Prometheus的写入端。
后续可以完全去掉Prometheus,只保留VictoriaMetrics+vmagent,实现真正的轻量化时序监控。
如果你对历史数据迁移或更多高级配置感兴趣,可以继续查看本站相关教程。
现在,检查你的监控仪表板,感受VictoriaMetrics带来的提速和资源释放吧。