前言

为了保证应用的可靠运行,需要对系统建立完善的应用监控,实时获取应用信息和运行状态。在之前的文章里,我们通过介绍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. 图解Oracle备份方式分类
  2. mysql 主从复制 双主从复制原理   防止主键重复问题(必看)
  3. SQLSERVER排查CPU占用高的情况
  4. MVC项目实践,在三层架构下实现SportsStore-03,Ninject控制器工厂等
  5. 二十四点游戏python_[求助]关于二十四点游戏python
  6. python建立py文件夹过程_Pycharm创建python文件自动添加日期作者等信息(步骤详解)...
  7. Win7图片查看器打印不了图片怎么办
  8. iOS 自定义字体设置
  9. java生成iso9660工具_基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(TableGo v7.0.0版)...
  10. 华为鸿蒙巴龙麒麟,华为5G新机强势曝光:麒麟985+巴龙5000+鸿蒙系统,颜值性能炸裂...
  11. Qt调试模式提示 Temporarily disabling breakpoints for unloaded shared library
  12. 【接口篇 / Wan】(6.4) ❀ 02. 单条宽带旁挂软路由优化 ❀ FortiGate 防火墙
  13. java上传文件的要点_Uploadify上传文件方法
  14. openGL库的简单配置
  15. 自恢复保险丝选型参数说明
  16. 网络打印机怎么和计算机连接不上,网络打印机无法连接怎么办?网络打印机设置步骤...
  17. 关于1000BASE-T1 1000BASE-TX和100BASE-T1
  18. 以太坊POA共识机制Clique源码分析 1
  19. 从保障淘宝到全球市场“第一阵营”,阿里云的DDoS防护之路走了多远?
  20. 最新防伪和代{过}{滤}理授权查询系统网站源码V1.3

热门文章

  1. 期权分仓系统是什么?期权分仓软件的原理又是什么?
  2. iscsi 挂载教程_iscsi挂载步骤
  3. CEPH iSCSI GateWay 编译部署安装
  4. 怎么给PPT加密、选用隐大师U盘
  5. 论文查重后修改技巧有哪些?
  6. $().click()和$().on(‘click‘,function(){})的区别
  7. 营改增后土地增值税的计算方法?
  8. Python 中如何修改栈的深度
  9. 震撼大数据!80后年薪多少,才能摆脱中年危机?
  10. 找电子书一个网站就够:数字图书馆 Zlibrary最新可用网址,持续更新