摘要:介绍宜信智能运维平台UAVStack的设计思想、技术架构和核心功能,及落地实践经验。
内容来源:宜信技术学院第6期技术沙龙-线上直播|宜信智能监控平台建设实践
主讲人:宜信高级架构师 & 智能监控平台负责人谢知求
一、UAVStack平台的产生背景目前业界常用的监控软件有很多,主流产品或以监控深度见长、或以监控广度见长。
关注监控广度的代表产品是Prometheus,其特点是生态圈活跃,针对常见的互联网中间件(如MySQL、Redis、Kafka、RocketMQ、MongoDB、ElasticSearch等)均提供了现成的指标采集插件来进行监控。类似产品还有Zabbix、Nagios和Open-Falcon。
关注监控深度的产品也有很多,如听云、OneAPM、PinPoint、SkyWalking。这类软件一般是探针型的,在应用性能监控方面提供了更深入的监控能力。
这些产品各有优势,也存在不足之处:
无法兼顾监控的广度和深度;
无法同时支持实时指标、调用链和日志三类类数据的采集,未考虑这三类功能的集成连通性,无法解决数据的时效、品控、对齐等问题。
为了克服上述不足,同时满足公司多样化和智能化的监控需求、降低二研的成本和难度,我们自主研发了全维监控与智能运维基础平台(UAVStack)。
作为智能监控平台,监控仅仅是智能化运维的第一环。我们认为,智能运维(AIOps)可以分三步走:全维监控、全维关联和全维智能。
第一步:全维监控,通过统一的采集体系,采集全维度的监控数据,包括系统、应用和服务的画像数据、实时指标数据、调用链数据和日志数据。
第二步:全维关联,获取全维度的监控数据后,需要进一步建立数据之间的关联关系。这种关联关系可以是通过画像、服务流图谱或调用链数据建立的强关联关系,也可以是通过机器学习算法建立的关联关系。通过全维关联,可以在监控数据之间建立实时关联关系;有了关联关系,我们就可以做根因分析了。
第三步:全维智能,通过引入包括异常检测、根因分析、智能降噪及任务机器人等AI服务,用机器取代人进行一些决策,从而持续提升公司智能化运维的水平。
二、UAVStack平台的总体技术架构 2.1 全维度监控+应用运维解决方案使用UAV的全维监控和应用性能管理工具集可以搭建一站式全维度监控+应用运维解决方案。
首先,UAV在每个物理机、虚拟机以及容器上部署一个监控代理程序(MonitorAgent,MA)。MA实际上是部署在宿主机上的独立JVM进程。
其次,在每个JEE中间件、JSE应用或其他JVM语言应用中,可通过Java Agent的形式植入监控探针,监控探针会与应用在同一个JVM进程中一起启动。
监控探针启动时,会自动对应用进行画像和监控。应用画像包括服务组件、客户端组件和日志组件的画像。
服务组件是应用对外暴露服务能力的接口,如服务URL;
客户端组件是应用访问的其它服务或第三方数据源(如MySQL,、Oracle、 Redis、MQ等)客户端;
日志组件是应用输出的日志。
除对以上三类组件进行自动画像和实时数据采集外,监控探针也会记录每个请求/响应生成端到端的调用链路,绘制各个应用/服务之间的调用关系,并生成服务图谱。
监控代理程序(MA进程)会定时拉取监控探针采集的数据,同时也会采集应用环境的性能指标(如CPU、内存、磁盘IO等)。此外,MA还提供了插件机制,支持个性化指标的采集。
最终,我们采集到了包括指标Metrics、调用链Tracing及日志Logging的全维度监控数据。其中:
Metrics数据包括:业务自定义指标、应用环境性能指标、应用集群/实例性能指标、服务组件/客户端组件/URL性能指标。
Tracing数据包括调用链指标、客户端体验(UEM)数据。
Logging数据包括日志、线程栈(Thread)数据。
2.2 监控探针架构UAV采集侧主要包括监控Agent和监控探针两部分。
监控探针负责应用层面的监控。
监控Agent负责应用环境层面的监控,同时会定时拉取监控探针的数据并上送给UAV服务端。
上图所示是监控探针的架构图。随着UAV功能的增强,探针已不仅仅用于监控目的,现在已经改名为中间件增强框架。