1
前言
互联网技术普及过程中,数据的监控对每个公司都很重要。近些年,随着一些优秀监控工具(比如Zabbix、Graphite、Prometheus)的成熟,每个公司都会搭建自己的监控体系,来分析整体业务流量和应对异常报警。但随着系统复杂性的提高,微服务的成熟,监控又有了新的问题需要解决,如上下文的链路关系、跨系统的故障定位等相关问题。
为减轻公司业务线资源和开发的监控压力,爱奇艺技术产品团队研发了一套全链路自动化监控平台,可以提供统一的监控标准和基础的监控能力,增强故障定位和深度分析能力,提升监控准确性和透明性,本文将基于监控一些经验,和大家分享全链路自动化监控平台。
2
背景
近些年ELK Stack、Cat、以及Google Dapper等监控工具在机器数据分析实时日志处理领域,也都在尝试解决一些新问题,我们对此做了分析,总结来看,ELK Stack重依赖ES,存储能力和查询能力较难扩展。Cat侧重于Java后端。基于Google Dapper的全链路监控思想相对成熟,但多数开源实现的介绍缺少深度分析,查询性能比较差,见下图:
维度 |
ELK Stack |
Cat |
Pinpoint/SkyWalking |
可视化 |
弱 |
一般 |
一般 |
报表 |
丰富 |
丰富 |
中 |
指标 |
无 |
有 |
无 |
拓扑 |
无 |
简单依赖图 |
好 |
埋点 |
Logstash/Beats |
侵入 |
无侵入,字节码增强 |
大查询 |
弱 |
弱 |
弱 |
社区 |
好,有中文 |
好,文档丰富 |
一般,文档缺,无中文 |
案例 |
很多公司 |
携程、点评、陆金所、猎聘网 |
暂无 |
源头 |
ELK |
aBay CAL |
Google Dapper |
另一方面看,随着微服务的成熟,实时监控更加重要,Prometheus等基础监控解决了基本指标和报警问题,部分全链路监控的实现解决链路追踪的问题,但两者各司其职,是互相的补充,却未融成统一的全链路监控平台。
基于对这些工具的分析,我们以现有的基础监控和日志采集为基础,融合Google Dapper思想,形成了统一的全链路自动化监控平台,并且可灵活快速接入公司的其他业务。对Google Dapper的改造,我们加入了缓存和离线处理的部分,大大提升了查询性能;加入了深度分析部分,能够自动诊断用户具体的报障;在改造链路UI展示的基础上ÿ