美团点评技术专家孙佳林:万亿级实时全链路监控系统架构演进!
本文来源 高效运维(ID:greatops)
讲师简介
孙佳林
美团点评基础架构部
本文将围绕上述三个方面,来介绍美团点评万亿数据量下的实时监控平台CAT。
1. CAT介绍
服务端监控是从服务本身角度监控是否健康,在基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
用户端监控。需要了解用户最真实的使用情况,比如打开美团外卖体验如何,主要表现有打开速度、加载流畅度等。
服务端监控。异常发现和根因定位,性能瓶颈在哪里?线上运行的系统指标是否正常?很多情况下,系统指标正常,并不代表应用是健康的。
运维运营。清楚了解服务的QPS及响应时间等核心指标,并根据这些指标来做相应的降级、扩容、缩容等操作。
用户端大盘
用户访问监控
用户资源监控
这是用户端大盘,对于分析整体的SLA数据是非常有帮助的,通过它我们能知道全国用户使用情况。曾经有些偏远地区网络稍微差一点,一段时间的成功率非常低,通过大盘可以很快定位和发现。
仅仅有整体数据是不足的,如果某一个时间里出现了显红的地区,我们需要知道是哪个接口出问题导致,可以通过用户访问监控来分析。用户访问监控有很多维度,比如返回码、请求来源APP、网络类型、平台类型、APP版本等等。
用户资源监控与上面的用户访问监控类似的,这里不再详细展开。
服务端监控指标有:性能指标、异常指标、系统指标、业务指标和调用链路。想象一个场景,用户打开APP加载比较慢,假设是后端服务返回影响了用户体验,那么要定位这个问题,往往要多个环节去排查。
如果是请求到达服务端后的响应较慢,可能伴随着请求超时异常,我们可以分别排查性能指标、异常指标的报表数据和趋势图,这些指标都是可以到机器维度的。对于出现异常的请求,会有一条调用链路与之关联,点开调用链路,可以看到详细的调用情况,以及每一步的耗时,对于我们分析哪一环节出现问题,起到关键作用。
业务指标是统计到集群粒度,关心整个服务宏观的业务表现。
点开show可以查看各个指标的分钟级趋势数据,包括响应分布、每分钟访问量、每分钟平均响应时间、每分钟成功率等。
异常大盘可以让我们快速发现目前哪些服务出现大量异常,并能按照每个部门的范围查找出现问题最多的服务。
Problem记录整个项目在运行过程中出现的问题,包括一些异常、错误、访问较长的行为。Problem报表是由logview存在的特征整合而成,方便用户定位问题。常见做法,是把异常写到机器日志文件,出现问题后,需要登陆机器进行日志排查。而Problem报表可以列出异常名称和堆栈明细,效率提高了很多。如下图,是一个请求异常的调用链路明细。
JVM相关指标
内存队列长度
线程执行状态
数据库连接池指标
2. 架构演进
随着业务规模的增长,CAT监控流量也呈现了指数级的增加。过去几年,我们不断进行技术和架构演进,接下来与大家一起回顾下我们的演进过程。
处理能力
纵向,性能优化,消息采样聚合
横向,水平扩容
需要配置CAT服务端路由信息
本机维护,维护成本较高
修改重启才能生效
一个应用直接连接一个CAT服务器,水平扩容不够优雅。
架构的改进,去除本机配置依赖,动态负载均衡策略和路由实时生效,便于水平扩容,解决横向的问题。
通信能力
接下来异地部署数据库和HDFS,将异地的存储落地控制在机房内部,解决跨机房流量抖动问题,同时避免数据查询跨机房、跨地域,也利于降低数据查看平均延时。
存储能力
CAT中监控数据,均是基于一小时报表形式存储在数据库中。随着业务需求的丰富化,这种存储对于跨多个小时的查询是不太合适的。我们在保留报表模型的基础上,引入了ES存储,将需要大量跨小时查询的指标,演进到ES存储模型,将一部分数据计算和存储能力下放到MQ的消费端。
Pull模式,单机服务,无法水平扩展。
误告率高,发布、机器宕机受影响。
通用性较差,大量重复开发。
告警策略单一。
告警不及时。
3. 开源社区
Java依赖精简,客户端对于陈旧框架的依赖进行了去除,更加精简。 支持多语言客户端。如c/c++、python、Golang等。 采样可补偿全量。
CAT新版存储做了很多的优化,感兴趣的可以阅读源码,这里不展开讲解。
本文来源 高效运维(ID:greatops)
-End-
阿里中台系列文章:
3.阿里数据科学家,讲透数据中台,15页PPT
4.闲鱼架构专家,详解Flutter技术架构15页ppt
想下载“阿里中台架构”的PPT?
第一步,关注“技术领导力”公众号
第二步,在对话框输入:中台
想跟文章作者、100位互联网大咖交流学习?
添加助理小姐姐Emma
注明“加群”,稍后她会拉你进社区群
往期精彩推文: