摘要:UAVStack推出的JVM监控分析工具提供基于页面的展示方式,以图形化的方式展现采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。前端
做为AllInOne的智能化服务技术栈,UAVStack提供了很是全面的监控数据采样功能,同时支持数据监控与预警。近期,咱们整合了原有的数据采集展现功能,新增JVM分析功能,推出了更易用的JVM监控分析工具。git
熟悉JDK的开发者都知道,JDK自己提供了一套JVM分析工具,包括jinfo、jmap、jstack等。用户能够经过命令行轻松获取JVM内存堆栈信息、内存对象分配以及JVM启动基本参数信息。但这些工具须要在命令行环境中执行,且生产环境下则须要经过堡垒机转发。github
开源社区一些不错的JVM分析工具也能够提供获取JVM基本信息、追踪堆栈、获取内存信息等功能,但一样须要命令行CLI的支持。服务器
UAVStack推出的JVM监控分析工具提供基于页面的展示方式,以图形化的方式展现采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。架构
JVM监控分析工具基于UAVStack既有架构,总体分为前端、后台及中间件加强框架(MOF)。其中:框架
总体架构流程以下图所示:运维
JMX提供相关接口,获取基础的JVM监控数据,如内存堆大小、GC状况等,是JVM监控数据的基础。工具
做为分析工具整条链路的基础,MOF依附于用户应用,主要提供如下基础支持:性能
Java Attach API是由Sun提供的一套非标准API,能够将用户链接到运行中的虚拟机进程上,进行agent的挂载等操做。优化
在JVM监控分析工具中,Java Attach API主要用于Attach到虚拟机进程,进行以下操做:
选择应用实例后便可进入基本监控页面。
该页面主要展现CPU使用率、线程状况、内存占用和GC状况。用户能够根据需求调整时间范围,查看不一样时段的监控数据。
JVM摘要页面显示当前虚拟机的基本参数信息,包括基本信息、JVM参数和系统属性。其中:
线程分析经过执行jstack获取线程基本信息,并对输出结果进行分析,获得线程状态数量、有无死锁等信息。
内存Dump经过执行jmap获取指定JVM的堆栈dump文件。
用户能够便捷地在前端一键生成dump,不须要再登陆堡垒机。点击“刷新”能够查看近期dump内存的操做记录。
CPU分析是基于线程栈的采样分析,主要提供两个功能:线程执行时间以及方法热点采样。
内存分析是基于线程以及堆的统计采样分析,主要提供两个功能:每一个线程的内存分配和堆内分配细节。
JVM监控分析工具是从监控、分析到展现的一体化工具。JDK自带的工具虽然也能够实现除CPU分析以外的其余功能,但不够便捷,也没法实现从采样、分析到图形化展现的一体化效果。JVM监控分析工具解决了开发人员没有线上应用堡垒机权限、没法分析采集到的数据等痛点,同时提供CPU与内存采样分析等功能,以较低的性能开销获取较为全面的JVM运行数据,帮助应用开发人员发现与分析问题,为应用开发优化提供参考依据。
UAVStack已在Github上开放源码,并提供了安装部署、架构说明和用户指南等双语文档。
开源地址:github.com/uavorg
做者:张明明
首发于:UAVStack智能运维