导语
作为凤睛早期的接入方、后期的核心成员,笔者经历了整个项目前后四年的变迁,看过项目的艰难开端、中期的默默积累以及后期的蓬勃发展。每一次架构的变迁都带着技术浪潮的烙印,也看到项目成员利用有限资源来解决实际问题而持续不断的创新
凤睛是百度商业业务系统的性能监控系统(APM),它侧重于对Java应用的监控,基本接入了百度绝大部分Java应用(覆盖数千个业务应用,数万个容器)。它能够对主流中间件框架( Spring Web、RPC、数据库、缓存等)进行自动埋点,实现全栈式性能监控和全链路追踪诊断,为百度各业务线提供微服务系统性能指标、业务黄金指标、健康状况、监控告警等。
凤睛产品流程图:
- 数据采集:凤睛探针技术能够自动植入到业务进程中去,采集相关性能信息,业务进程完全无感知。
- 数据计算和分析:按照类型,时序数据存储在百度SIA智能监控平台的时序数据库 TSDB,用来生成可视化报表和异常报警。调用链数据会被存入Palo( 开源名为Doris) 大数据仓库,用来拓扑分析和调用链检索。
- 应用场景:如上所述,凤睛提供稳定性报表、异常报警、错误堆栈分析、服务耗时分析、调用拓扑分析、业务日志关联分析等。
凤睛的架构变迁时间线:
一、 凤睛立项
项目发起在2016年,百度凤巢广告业务系统中间件 (分布式RPC框架 Stargate等、配置中心、数据库中间件等)已经完善。随着单体服务拆分的深入,整体Java在线上部署规模逐渐变多,同时,暴露的问题也越来越多。典型的问题有:
- 核心服务问题定位周期长。多个模块大量报错后,花费了很长时间才定位问题。
- 集群日志获取代价非常高,缺乏日志调用链关系等原因导致定位代价很高,甚至有些问题无法定位。
- 异常日志需要登录具体的线上实例查看。而线上