写点什么

监控系统从 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:008882

评论 1 条评论

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

26k Star!理解Git太轻松了。。。

Jackpop

2022-11-26:给定一个字符串s,只含有0~9这些字符 你可以使用来自s中的数字,目的是拼出一个最大的回文数 使用数字的个数,不能超过s里含有的个数 比如 : 39878,能拼出的最大回文数是

福大大架构师每日一题

算法 rust 福大大

Linux 用户和用户组管理

芯动大师

11月月更 Linux系统 用户组

python数据分析-pandas基础(4)-数据映射apply

AIWeker

Python Python数据分析 11月月更

华为云会议,轻松实现远程智能办公

秃头也爱科技

华为云桌面,助力云上工作,让云上工作更高效!

秃头也爱科技

世界杯来了,让 Towhee 带你多语言「以文搜球」!

Zilliz

华为云会议录制能力再升级,会议成果全收录!

科技怪授

华为云桌面Workspace云上办公,方便得很!

路过的憨憨

【Python 基础学习】-列表

度假的小鱼

11月月更 python列表

【Python 基础学习】-元组-字典-集合

度假的小鱼

11月月更 Python元组 Python字典 Python集合

python数据分析-pandas基础3-数据对齐

AIWeker

Python Python数据分析 11月月更

ABY3

NOT_FOUND

微服务 vs 单体架构

agnostic

微服务架构

ipv6地址概述——了解ipv6与ipv4不同

初学者

网络 11月月更

极客时间运维进阶训练营第五周作业

好吃不贵

跨区域远程沟通协作,大家保险选择华为云会议

科技怪授

【Python 函数】-介绍

度假的小鱼

11月月更 Python函数使用方法

ipv6地址概述——了解ipv6地址

初学者

网络 11月月更

C++---类型萃取---is_array && is_enum/is_union/is_class

桑榆

C++ STL 11月月更

在child_process域和错误的冒泡和捕获实践【Note.js】

恒山其若陋兮

前端 11月月更

python小知识-hook函数

AIWeker

Python python小知识 11月月更

一文熟悉 Go 的分支结构(if - else-if - else、switch)

陈明勇

Go golang Switch if 11月月更

角色扮演?一款跨平台可移植开源游戏!

Jackpop

云原生基础组件选型出发点

穿过生命散发芬芳

11月月更 云原生落地

华为云会议,云上办公更轻松高效

路过的憨憨

面向大规模队列,百万并发的多优先级消费系统设计

阿里云CloudImagine

阿里云 队列 消费系统

企业办公新模式,随时随地云上协同!

秃头也爱科技

【网络安全必看】如何提升自身WEB渗透能力?

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

支持向量机-选取与核函数相关的参数:degree & gamma & coef0

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

Note.js框架中的cluster集群和断言测试的实战剖析

恒山其若陋兮

前端 11月月更

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