网易云基于Prometheus的微服务监控实践

当监控遇上微服务

在过去数年里,微服务的落地一直都是业界重点关注的问题,其始终面临着部署、监控、配置和治理等方面的挑战。轻舟微服务平台是网易云为企业提供的一套微服务解决方案,其中微服务监控是其关注的重点问题之一。与传统监控相比,微服务监控面临着更多难点,包括:

  1. 监控对象动态可变,无法进行预先配置;

  2. 监控范围非常繁杂,各类监控难以互相融合;

  3. 微服务实例间的调用关系非常复杂,故障排查会很困难;

  4. 微服务架构仍在快速发展,难以抽象出稳定的通用监控模型。

在工程角度也面临着不少考验,如:

  1. 在微服务架构里,软件系统通常会被拆分为数十甚至数百个微服务,这种拆分会使得监控数据爆炸增长,监控系统必须具备处理和展示这些数据的能力;

  2. 监控系统必须要保证可靠性,具体而言:保证不会因为单点故障而全局失效,监控数据有备份机制,系统各服务的实例均可通过备份数据得到恢复;

  3. 监控系统必须支持云上部署及快速水平扩容,这既是云原生的基本要求,也符合企业系统微服务化演进的实际情况。

微服务监控的技术选型

微服务监控的诸多挑战使得我们不得不慎重地进行技术选型。选择开源还是再造轮子,这个问题在项目初期一直困扰着我们,经过一段时间的调研和论证,开源项目Prometheus成了最终的答案。

Prometheus是CNCF旗下的项目,该项目是一个用于系统和应用服务监控的软件,它能够以给定的时间间隔从给定目标中收集监控指标,并能够通过特定查询表达式获取查询结果。

选择Prometheus的主要原因是:

  • 灵活的数据模型:在Prometheus里,监控数据是由值、时间戳和标签表组成的,其中监控数据的源信息是完全记录在标签表里的;同时Prometheus支持在监控数据采集阶段对监控数据的标签表进行修改,这使其具备强大的扩展能力;

  • 强大的查询能力:Prometheus提供有数据查询语言PromQL。从表现上来看,PromQL提供了大量的数据计算函数,大部分情况下用户都可以直接通过PromQL从Prometheus里查询到需要的聚合数据;

  • 健全的生态: Prometheus能够直接对常见操作系统、中间件、数据库、硬件及编程语言进行监控;同时社区提供有Java/Golang/Ruby语言客户端SDK,用户能够快速实现自定义监控项及监控逻辑;

  • 良好的性能:在性能方面来看,Prometheus提供了PromBench基准测试,从最新测试结果来看,在硬件资源满足的情况下,Prometheus单实例在每秒采集10w条监控数据的情况下,在数据处理和查询方面依然有着不错的性能表现;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值