QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

监控系统从 Prometheus 到 VictoriaMetrics 的转型升级实战:成本降低 30%、性能提升超 4 倍

作者:Aditya Kulkarni

  • 2025-02-26
    北京
  • 本文字数:1630 字

    阅读完需:约 5 分钟

监控系统从 Prometheus 到 VictoriaMetrics 的转型升级实战:成本降低 30%、性能提升超 4 倍

Prezi 的工程团队最近分享了他们从基于 Prometheus 的监控系统切换到 VictoriaMetrics 的经历,重点讲述了在成本优化、性能提升和架构简化方面的成果。这次转型使成本降低了约 30%,复杂查询的完成时间也从 30 多秒缩短至 3 - 7 秒。


Prezi 的高级站点可靠性工程师 Grzegorz Skołyszewski 在一篇 博客文章 中总结了这段历程。到 2024 年,Prezi 的 Prometheus 部署已经过时且成本高昂,它运行在一个已弃用的内部平台上,维护起来需要耗费大量资源。该团队希望通过降低系统复杂度、迁移到 Kubernetes 平台以及降低运营成本,实现指标收集和存储系统的现代化升级。


然而,现有的 Prometheus 系统存在诸多问题。由于其规模(拥有 500 万个活跃序列),资源需求极高;在管理用于仪表盘展示和警报功能的多个实例时十分复杂;并且还依赖老旧的基础设施。


为了解决这些问题,团队开始探索替代方案,对托管式和自托管式的解决方案都进行了评估。托管式方案因成本过高被排除,而像 Thanos、Cortex/Mimir 和 VictoriaMetrics 等自托管式方案则进入了考虑范围。最终,Prezi 工程团队选择了 VictoriaMetrics,因为它具有简单易用、成本效益高和性能优越等优势。


与其他依赖如 AWS S3 等对象存储的工具不同,VictoriaMetrics 使用块存储,这种存储方式成本更低且性能更好,还省去了外部缓存子系统。团队进行了概念验证,结果显示:之前在 Prometheus 中会超时的查询,在 VictoriaMetrics 中 3 - 7 秒就能完成,同时存储使用量降低了 70%,内存使用量降低了 60%,CPU 使用时间减少了 30%。


起初,团队在多个 AWS 可用区(AZ)中部署了 VictoriaMetrics 集群版本,以确保高可用性。但这种部署方式因跨可用区的网络流量,大幅增加了成本。每个指标的写入或查询操作,都需要在 VMInsert 和 VMStorage 等组件之间进行额外的跳转,增加了数据传输费用。为解决这个问题,他们将集群部署改为在不同可用区分别部署两个独立的 VictoriaMetrics Single 单实例。



来源:《可用区如何耗尽你的预算——我们从 Prometheus 到 VictoriaMetrics 的转型之路》


团队引入了负载均衡器来实现故障转移冗余,并配置了代理在实例停机期间缓存数据,以防止数据丢失。这种架构在保持可靠性的同时,最大程度减少了跨可用区的流量。


团队还做了其他改进,以进一步优化系统。为了在不支付企业许可证费用或依赖 Grafana Cloud 等外部服务的情况下实现指标的长期存储,他们部署了另一个设置了自定义保留策略的 VictoriaMetrics Single 实例。


为简化配置管理,他们采用了 VictoriaMetrics Kubernetes Operator,这样产品团队可以直接从自己的代码仓库管理警报配置。对于非 Kubernetes 工作负载,他们部署了额外的静态配置代理。此外,他们还通过 Grafana Private Data Connect 整合了 Grafana 实例,实现了自托管指标与 Grafana Cloud 的无缝集成。


我们发现技术社区在 Hacker News 和 Reddit 上展开了有趣的讨论。Hacker News 上的讨论围绕云计算中跨可用区数据传输成本高昂的问题展开,有人认为这扭曲了最佳实践,也有人认为这种定价反映了扩展数据中心间带宽的成本。


在 Reddit 上,讨论聚焦于监控系统设计的权衡。一种观点警告说,远程写入系统会引入延迟,并依赖中央规则评估,在数据积压时存在故障风险。另一种观点则认为,与 Prometheus 这种有状态的系统相比,无状态代理结合延迟规则评估的方式在可扩展性、一致性和维护便利性上更具优势,而如何权衡则取决于用户的偏好。


这次迁移为 Prezi 的工程运营带来了显著的好处。除了降低成本和缩短查询时间外,借助 Kubernetes 原生工具,指标的获取也变得更加便捷。新系统在可扩展性和可靠性方面也有了提升,更能应对未来的业务增长。


关于作者


Aditya Kulkarni,Aditya 近期一直担任具有技术敏锐度的交付负责人。他曾与多家企业合作,助力其踏上敏捷转型与 DevOps 变革之路。他热爱阅读,始终热衷于关注软件开发领域的最新动态!


原文链接:


https://www.infoq.com/news/2025/02/prezi-prometheus-victoriametrics/

2025-02-26 14:008600

评论 1 条评论

发布
用户头像
victoria metrics还不成熟吧,看看这文章
https://xie.infoq.cn/article/409a5ef57c0dfb3a5db226e23
2025-03-03 08:26 · 湖南
回复
没有更多了

Git 分支管理策略汇总

AlwaysBeta

git GitHub gitlab 分支管理

CSS的学习笔记(五)

lxmoe

CSS 前端 学习笔记 11月月更

Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击

小哈区块

Java实现List中集合的元素进行排序

共饮一杯无

Java List 11月月更

Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击

西柚子

Vue基础学习(四)

Studying_swz

Vue 11月月更

Vivado安装和使用

芯动大师

Verilog FPGA系统 vivado 11月月更

一款超好用的Json编辑工具

Jackpop

深入Redis数据结构和底层原理

闫同学

redis 缓存 11月月更

汽车产业“芯事”何解?

易观分析

汽车芯片

探知数字化研发1-前言篇

薛飞

数字化 软件研发

初探Apollo远程服务配置中心

闫同学

阿波罗 11月月更 apllo 远程配置中心

部署和体验Helm(2.16.1版本)

程序员欣宸

Kubernetes Helm 11月月更

运维进阶训练营 -W03H

b1a2e1u1u

运维

Vue基础学习(五)

Studying_swz

Vue 11月月更

聚焦银行APP用户体验,易观千帆GX指数即将独家首发

易观分析

易观

计算机网络:随机访问介质访问控制之令牌传递协议

timerring

令牌桶 11月月更

2022-11-11:设计一个最大栈数据结构,既支持栈操作,又支持查找栈中最大元素。 实现 MaxStack 类: MaxStack() 初始化栈对象 void push(int x) 将元素 x 压

福大大架构师每日一题

Java 算法 福大大

涨姿势了,这 4 个场景可用 CSS 完全取代 JS ~

掘金安东尼

前端 11月月更

Go-MySQL-Driver,让Go语言拥抱MySQL

闫同学

Go MySQL 11月月更

【愚公系列】2022年11月 微信小程序-app.json配置属性之networkTimeout

愚公搬代码

11月月更

定了,2022双11 技术进化开启新未来

阿里技术

双11

SAP UI5 数据绑定中的工厂函数

汪子熙

SAP Fiori SAP UI5 ui5 11月月更

HTML零基础入门教程(一)

异星球的小怪同志

前端 HTML5, CSS3 DW 零基础 11月月更

【LeetCode】分割数组Java题解

Albert

算法 LeetCode 11月月更

opensd开源啦 !这套自动化部署OpenStack工具你值得拥有

openEuler

开源 操作系统 openEuler OpenStack

麒麟信安携手 openEuler 支撑国家电网首批数字换流站试点项目安全高效运行

openEuler

1.6k Star!可以优雅的使用Git了。。。

Jackpop

算法题学习---链表中环的入口结点

桑榆

算法题 11月月更

类继承

Maybe_fl

Java Web(五)Web

浅辄

tomcat javaWeb 11月月更

监控系统从 Prometheus 到 VictoriaMetrics 的转型升级实战:成本降低 30%、性能提升超 4 倍_软件工程_InfoQ精选文章