前言

为了保证应用的可靠运行,需要对系统建立完善的应用监控,实时获取应用信息和运行状态。在之前的文章里,我们通过介绍MOF中的CaptureFramework框架和InterceptFramework框架,分别阐述了应用实时数据和画像数据的采集方法。

然而仅仅采集是不够的,还需要对应用数据进行归集和处理,并提供相应的信息存储和查询能力。

在UAVStack中,应用数据的归集功能通过MA来实现。MA可以定时抓取MOF中的实时信息,自动发现Tomcat、MSCP、JavaSE中的信息,并通过数据分析得出监控信息,通过RocketMQ将归集后的数据发送到HM进行存储,并提供查询功能。

MA架构

在介绍应用数据归集之前,首先介绍监控代理程序MonitorAgent。

MonitorAgent是在应用外独立运行的MSCP程序,提供数据采集功能、节点容器控制功能以及应用数据归集功能。MonitorAgent的架构如图所示:

MonitorAgent具有以下特点:

  • 每个host machine只有一个监控代理程序进程。作为心跳客户端,MA提供host心跳信息和当前节点容器控制功能,归集容器与进程的信息,使得当前host能够被HM发现和控制。
  • MA被设置为守护进程,挂掉后可自重启。
  • MA负责抓取并归集当前host上所有应用的监控数据,包括从MOF定时抓取的数据和第三方推送的数据。

MonitorAgent应用数据归集的启动过程如下:

  • 启动AppServerMonitorDetector实例,查找运行在宿主机系统和容器中所有的JVM进程,调用指定的MonitorDataCatchWork来获取抓取实时数据。
  • 创建AppServerProfileDataCatchWorker实例并开启一个线程采集profile数据。
  • 启动MDFListener来接收第三方推送的应用数据进行归集。
  • 启动MonitorDataProcessor用于计算增量数据。

应用数据归集

MOF里的DataObserver提供了JMX和HTTP两种模式来暴露应用数据,供AppServerMonitorDetector进行采集。AppServerMonitorDetector的层次结构如下图所示:

AppServerMonitorDetector:定时任务,用于注册、管理Detector并定时运行。如果运行时性能损耗过高,AppServerMonitorDetector会进行自杀,然后注册并运行JVMLocalOSDetector和JVMContainerOSDetector。

OSDetector:用于自动发现JVM进程并指定DataCatchWorker归集进程的应用信息,包括JVMLocalOSDetector和JVMContainerOSDetector两种。

JVMLocalOSDetector:用于自动发现运行宿主机系统上的所有JVM进程。首先通过JVM工具扫描本地操作系统上所有JVM进程的信息,根据进程ID判断是否需要指定新的DataCatchWorker。

如果需要,则利用JVM systemProperties中的uav.engine.vendor字段判断当前应用类型,并利用JVM进程信息生成特定的JMXMonitorDataCatchWorker实例,将DataCatchWorker的JVMAccessURL字段设置为JMX_CONNECTOR_ADDRESS。MonitorDataCatchWorker可以利用JVMAccessURL以JMX的方式归集该JVM进程产生的实时数据。

JVMContainerOSDetector:用于自动发现容器(Docker)中的JVM进程。容器通过namespace对运行环境进行了隔离,因此Detector通过Http方式获取容器内部的JVM进程信息。JVMContainerOSDetector首先通过扫描找到所有安装了MOF的Docker进程,通过ping来判断容器是否包含JVM进程。

如果发现JVM进程,则再次通过Http请求JVM进程的SystemProperties信息,生成新的HttpMonitorDataCatchWorker实例,并与进程的url和UAV_MOF_ROOT拼接成JVMAccessURL。MonitorDataCatchWorker可以利用JVMAccessURL以Http方式对该JVM进程的应用数据进行归集。

MonitorDataCatchWorker:用于归集进程内的应用数据。DataCatchWorker会依据不同的服务类型(AppServer、MSCP、JSE)以JMX或Http方式采集应用数据并进行处理。

以归集AppServer和MSCP应用信息的JMXAppServerMonitorDataCatchWorker为例,DataCatchWorker通过JMXConnector和jmxurl连接MOF上的MBeanServer,采集MOF暴露的MBean,创建MonitorDataFrame(MDF)和ProfileMonitorDataFrame(PMDF)用于存储MBean中的实时信息和画像信息,并利用MonitorDataProcessor计算实时信息的增量数据。归集到的应用信息在PublishHandler上通过RocketMQ发送给HM进行存储。

归集的画像数据包含以下信息:

  • 应用服务的基本信息,包括系统信息和所在容器的信息。
  • 应用服务内部的组件,包括服务组件、客户端组件、日志组件等。
  • 应用服务的调用关系(溯源信息)。

归集的实时数据包含以下信息:

  • JEE服务,MSCP服务端采集应用集群、应用实例、以及特定URL的响应时间、加载计数、错误计数等。
  • JSE服务会采集JVM状态,包括Heap使用、GC计数、线程计数、CPU、class计数等数据。
  • 客户端采集客户端的访问计数、响应时间、错误计数等数据。

MDFListenServer的运行机制则较为简单,指定了IP与端口,以Http的形式接收第三方推送的MDF信息,将其发送到MonitorDataPublishHandler进行发送。

应用数据存储

HM包含画像数据服务和实时数据服务,负责消费并存储RocketMQ中的应用数据。HealthManager在启动时注册DataMessageHandler,负责处理MQ收到的信息。MonitorDataMessageHandler会将收到的实时数据存储到Redis中并设置过期时间,历史数据会通过Http方式存储于OpenTSDB中。

同时,实时数据服务还会将监控数据重新发送至RocketMQ中,该数据最终会被实时预警服务进一步消费,用以计算预警信息。ProfileDataMessageHandler会将收到的画像存储到Redis中,并开启定时任务,清理未定时更新的画像信息。历史画像数据过期后会以文档的形式通过MongoDBClient存储于MongoDB中。

整个应用信息采集和存储的流程如图所示:

应用数据的展示

HM对外暴露查询接口,支持对5分钟内的应用数据和历史应用数据进行查询。UAV APPHUB利用查询接口提供以下功能:

1.应用集群信息

通过上帝之眼→应用监控可以了解应用集群及集群下所有应用的相关信息。HM中的定时组件HealthManagerProfileDataLifeKeeper会定时检查应用实例画像数据的状态。

如果画像数据在指定时间内未更新,HM会将应用实例设置为濒死状态;如果超过指定时间两倍后画像数据仍未更新,HM会将应用实例设置为死亡状态;超过指定时间三倍后,HM会在缓存中清除该应用实例的画像信息并不予显示。

2.应用实例信息

应用可以分为JEE应用、MSCP应用和JSE应用。在应用集群中点击应用实例,可以获取实例的详细信息,包括:

  • 应用实例性能:显示应用的实时数据。其中,

    JEE应用和MSCP应用的实时数据包括:

    • 访问计数:总计数、错误计数、警告计数。
    • 响应时间:最长响应时间、最短响应时间、平均响应时间。
    • 响应代码计数:RC+HTTP响应码,如RC200表示HTTP响应码是200。

    JSE应用的实时数据包括:

    • TPM:每分钟新启线程数。
    • HPM:每分钟Heap变化。
  • 应用实例组件(画像信息)包括:

    • 服务信息:包含服务组件、客户端组件、日志组件等。
    • 应用运行环境:包括应用的运行服务器、容器信息、进程信息。
    • 应用实例工具:支持调用链跟踪、浏览器跟踪、线程分析。

3.组件实例信息

点击应用实例的组件,可以获取应用组件的详情信息。服务组件和客户端的指标包括访问计数、响应时间和错误计数。点击日志组件则进入应用日志搜索界面。

4.服务图谱

点击应用集群的详情按钮,可以查看应用实例的服务图谱。服务图谱不仅可以可视化展示应用/服务之间的调用关系,描述服务与服务的静态拓扑和运行时特性的图谱;还能够对存在问题的服务或调用关系进行标注。

在服务图谱中点击各组件,可以获得组件的实例信息。点击组件之间相连的调用关系,可以获得应用服务作为客户端对URL的调用状况,服务图谱会针对存在问题的组件或调用关系(如响应时间过长)进行提示。

5.时空沙盘

通过上帝之眼→时空沙盘可以查询应用实例和容器组件的历史数据。

总结

UAVStack的应用数据归集功能已在宜信公司内部广泛使用,是具备较高可用性和可靠性的分布式服务。运维人员可以通过APPHUB获取应用画像数据和实时数据,了解应用运行状况,定位系统的运行问题,是保障系统可靠运行的强力助手。

官方网站

开源地址

UAVStack已在Github上开放源码,并提供了安装部署、架构说明和用户指南等双语文档,欢迎访问-给星-拉取~~~

扫一扫下方二维码,关注一个不会让你失望的公众号

转载于:https://juejin.im/post/5c87771e5188257a323f5a0f

UAVStack应用数据归集相关推荐

  1. 大数据中台向AI中台演进是大势所趋?

    来源 | 宜信技术学院(ID:CE_TECH) 导读:自从阿里巴巴提出"中台"的概念之后,这个词汇就成为各领域企业关注的焦点,很多人在考虑建设自己的中台.然而,构建中台是否真有必要 ...

  2. 纷享车链AutoChain首创之数据保险柜的解读

    摘要:纷享车链Auto Chain首创的数据保险柜借助区块链技术,旨在解决现有云盘等中心化服务器的数据安全.用户隐私数据泄露等问题,纷享车链Auto Chain通过数据保险柜把数据的控制权真正赋予用户 ...

  3. 【实践案例】Databricks 数据洞察在美的暖通与楼宇的应用实践

    简介: 获取更详细的 Databricks 数据洞察相关信息,可至产品详情页查看:https://www.aliyun.com/product/bigdata/spark 作者 美的暖通与楼宇事业部 ...

  4. 面向大数据与云计算调度挑战的阿里经济体核心调度系统

    编者按 伏羲(Fuxi)是十年前最初创立飞天平台时的三大服务之一(分布式存储 Pangu,分布式计算 MaxCompute,分布式调度 Fuxi),当时的设计初衷是为了解决大规模分布式资源的调度问题( ...

  5. 浅谈数据中台安全体系构建思路

    作者:王振东 来源:绿盟科技 战略规划部 摘要 数据中台是大数据业务体系数据规约化建设的核心场景,数据中台既搭建大量数据归集的相关设施,又针对数据开展大量治理.运维.分析.加工.共享.开放等交互事务, ...

  6. 区块链在数据流通中的应用

    区块链在数据流通中的应用 闫树,卿苏德,魏凯 中国信息通信研究院,北京 100191 摘要:大数据的流通是创造数据价值的关键一环,然而目前数据流通面临着诸多问题.区块链是一种分布式账本技术,具有去中心 ...

  7. 数据驱动科技赋能,东吴证券打造数据中台“九大能力”

    公司简介 东吴证券股份有限公司作为首家上市的地级市券商,扎根苏州,布局全国,树立"坚持根据地.融入长三角.服务中小微"战略导向,致力于为实体经济增添活力,为美好生活创造价值,建设公 ...

  8. 数据又多又散,“孤岛困境”怎样破局?

    导读:企业数据指的是企业内部员工及其合作伙伴跨越不同部门.不同地点而共享,跨越不同大洲而传播的数据.这些数据对企业具有很高的价值,包括财务数据.业务数据.员工个人数据等,企业花费了大量时间和金钱来保证 ...

  9. 如何借助大数据提升医疗质量管理

    大数据时代给医疗卫生领域带来了前所未有的机遇医学是数据密集型行业,医疗健康活动会产生大量医疗数据,这些数据对于保障医疗安全,提升医疗质量具有重要的价值. 如何将大数据有效应用到医院管理实践,如何利用医 ...

最新文章

  1. Visual Studio2019 应用程序无法正常启动0xc000007b
  2. 你以为ACI=SDN?大错特错!
  3. 新课标下计算机教学,浅析新课程标准下小学信息技术教学
  4. css使按钮固定在界面上面
  5. MySQL 实例空间使用率过高的原因和解决方法
  6. C#净化版WebApi框架
  7. matlab libjli.so,error while loading shared libraries: libjli.so 问题解决
  8. 混音师的混音之道|处理母带和混音的差别?母带处理的真相(上)|MZD Studios
  9. 教务管理系统:成绩、课表查询接口设计及抢课、监控功能实现
  10. node下运行js文件实时更新文件变化
  11. Qt下绘制PPI扫描的雷达图
  12. 12.11晚自习习题
  13. 小米路由器3无线网连接到服务器,192.168.31.1小米路由器手机登录设置方法
  14. 本地服务:无法访问此网站 localhost 拒绝了我们的连接请求。ERR_CONNECTION_REFUSED
  15. 什么是前端组件化开发
  16. 准备做个舒米的专辑,回顾一下这位我最喜欢的车手
  17. 使用esp32cam与stm32c8t6核心板开发的99A静改动
  18. OSError: [WinError 127] 找不到指定的程序。
  19. 计算思维训练——神奇的等式
  20. CISE、CISO、有什么区别和联系?怎么选?

热门文章

  1. 计算机学形成性考核册答案,电大 最新电大计算机形成性考核册(本科)答案.doc...
  2. Linux下无法加载Qt platform plugin “xcb“
  3. 爱心代码(python)
  4. c语言读取词法并显示坐标,完整版)词法分析器(c语言实现
  5. 写作——如何制作参考文献
  6. PyTorch官方安装方法下载太慢,直接用pip和conda命令安装,因为网络速度太慢,导致下载失败的解决的办法。
  7. c语言用if语句判断字符类型,C语言if语句的使用
  8. 分享小黄人商务唯美通用PPT模板
  9. 【狮子数学】06连续与间断
  10. Win7开机登陆密码的破解