宜信智能监控平台建设实践|分享实录

摘要:介绍宜信智能运维平台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功能的增强,探针已不仅仅用于监控目的,现在已经改名为中间件增强框架。

上图左边可以看到,中间件增强框架位于应用服务器和应用之间,采用了中间件劫持技术,对应用服务器的代码进行了类加载劫持和字节码改写,对上层应用代码无侵入。

右边是监控探针放大之后的架构图,最底层是应用服务器适配层,对互联网常用的开源中间件(如Tomcat、Jetty、SpringBoot)提供了适配支持,对其它服务器可以相应地扩展一个Adapter适配器来进行支持。

在适配层之上,首先提供了一系列通用的扩展点SPI,再基于这些SPI,扩展出了与监控相关的画像收集和指标采集功能;与问题诊断分析工具相关的调用链跟踪、浏览器跟踪、JVM线程分析、堆内存dump执行等功能;与服务治理相关的服务限流/降级以及服务安全管控等功能。此外,还提供了这些功能对Docker和K8s容器环境的适配。

最上层提供了应用对接API以及数据发布API,支持通过HTTP和JMX两种方式来获取探针上的监控数据。

2.3 数据捕获架构

接下来将介绍UAV数据捕获和传输的架构。

从上图可以看到,监控代理程序Agent数据传输采用了双通道+双心跳的方式:

1)双通道是指HTTP心跳和MQ传输这两条通道:

  • Http心跳传输通道,用来传输应用环境相关的监控数据,主要包括:容器/节点画像数据和实时监控数据;
  • MQ传输通道,用来传输应用相关的监控数据,主要包括:应用实时数据,画像数据,日志数据,以及调用链和JVM线程栈等APM数据。MQ数据传输通道上的数据格式采用了统一的Schema,方便后期对数据的转换和处理。

2)双心跳是指不管来自Http通道还是MQ通道的数据,实际上既可以看成监控数据,也可以看成心跳数据。来自每个通道的数据都会到UAV监控后台服务“签到”。两种通信方式意味着更高的可靠性。

Agent通过双通道的方式,将数据传输到UAV监控后台,我们称之为健康管理服务。

健康管理服务会根据数据类型对监控数据进行解析处理,并分别持久化到合适的数据源,比如OpenTSDB存储时序指标数据;ES存储日志、调用链、JVM线程分析等APM数据。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

送菜的厨子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值