摘要:UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。

引言

作为AllInOne的智能化服务技术栈,UAVStack提供了非常全面的监控数据采样功能,同时支持数据监控与预警。近期,我们整合了原有的数据采集展示功能,新增JVM分析功能,推出了更易用的JVM监控分析工具。

熟悉JDK的开发者都知道,JDK本身提供了一套JVM分析工具,包括jinfo、jmap、jstack等。用户可以通过命令行轻松获取JVM内存堆栈信息、内存对象分配以及JVM启动基本参数信息。但这些工具需要在命令行环境中执行,且生产环境下则需要通过堡垒机转发。

开源社区一些不错的JVM分析工具也可以提供获取JVM基本信息、追踪堆栈、获取内存信息等功能,但同样需要命令行CLI的支持。

UAVStack推出的JVM监控分析工具提供基于页面的展现方式,以图形化的方式展示采集到的监控数据;同时提供JVM基本参数获取、内存dump、线程分析、内存分配采样和热点方法分析等功能。

一、架构

JVM监控分析工具基于UAVStack既有架构,整体分为前端、后台及中间件增强框架(MOF)。其中:

  • 前端负责展示数据、向后台发送用户执行指令;
  • 后台负责下发指令、响应用户查询、处理采集到的数据;
  • 中间件增强框架(MOF)负责接收后台下发的指令、执行指令并返回数据或将数据写入文件,然后通过UAV提供的文件归集功能上送数据。

整体架构流程如下图所示:

二、关键技术

2.1 JMX

JMX提供相关接口,获取基础的JVM监控数据,如内存堆大小、GC情况等,是JVM监控数据的基础。

2.2 中间件增强框架(MOF)

作为分析工具整条链路的基础,MOF依附于用户应用,主要提供以下基础支持:

  • 基础数据采集:MOF植入应用中,JMX定期获取并上报相关JVM的基本信息数据,为展示和预警提供数据基础。
  • 请求捕获、指令执行:JVM监控分析工具的大多数功能都需要下发指令至应用所在的服务器。MOF负责把下发指令的请求拦截下来,执行并返回对应的结果。

2.3 Java Attach API

Java Attach API是由Sun提供的一套非标准API,可以将用户连接到运行中的虚拟机进程上,进行agent的挂载等操作。

在JVM监控分析工具中,Java Attach API主要用于Attach到虚拟机进程,进行如下操作:

  • 获取JMX Connection:从外部获取JVMConnection,得到MXBean,抓取运行数据。(CPU采样分析)
  • 获取VirtualMachine对象:调用接口,得到堆内存分布信息。(内存采样分析)

三、功能展示

3.1 基本监控

选择应用实例后即可进入基本监控页面。

该页面主要展示CPU使用率、线程情况、内存占用和GC情况。用户可以根据需求调整时间范围,查看不同时段的监控数据。

3.2 JVM摘要

JVM摘要页面显示当前虚拟机的基本参数信息,包括基本信息、JVM参数和系统属性。其中:

  • 基本信息包括pid、主机信息、启动参数以及JVM的启动时间等最基本、最重要的信息;
  • JVM参数包括所有JVM启动参数,用户可查看指定的堆大小、垃圾回收器信息等;
  • 系统属性包括写入System.Properties中的所有配置信息以及Javaagent的配置属性。

3.3 线程分析

线程分析通过执行jstack获取线程基本信息,并对输出结果进行分析,得到线程状态数量、有无死锁等信息。

3.4 内存Dump

内存Dump通过执行jmap获取指定JVM的堆栈dump文件。

用户可以便捷地在前端一键生成dump,不需要再登录堡垒机。点击“刷新”可以查看近期dump内存的操作记录。

3.5 CPU分析

CPU分析是基于线程栈的采样分析,主要提供两个功能:线程执行时间以及方法热点采样。

  • 线程执行时间是指线程在采样期间的活动时间。查询结果按照线程活动总时间排序,同时提供线程名称和线程执行时间信息,用户可据此判断应用的执行情况。

  • 方法热点采样统计所有方法的执行时间,提供方法的类名和方法名信息。其中,方法的自用执行时间不包括方法调用其他方法的执行时间。查询结果按照方法的自用执行时间降序排序,用户可以查看当前应用内部耗时较长的执行方法,判断应用是否异常、是否需要优化。

3.6 内存分析

内存分析是基于线程以及堆的统计采样分析,主要提供两个功能:每个线程的内存分配和堆内分配细节。

  • 线程内存分配提供每个线程的内存分配大小和线程名称等信息,按照内存分配大小降序排列。用户可查看当前占用内存较大的线程。

  • 堆内分配提供了各个类在堆内的分配实例数以及所占用的堆内存,按照堆内存大小降序排列。用户可把该功能当作简易的dump及分析工具,快速分析内存分配情况,发现内存分配问题。

总结

JVM监控分析工具是从监控、分析到展示的一体化工具。JDK自带的工具虽然也可以实现除CPU分析之外的其他功能,但不够便捷,也无法实现从采样、分析到图形化展示的一体化效果。JVM监控分析工具解决了开发人员没有线上应用堡垒机权限、无法分析采集到的数据等痛点,同时提供CPU与内存采样分析等功能,以较低的性能开销获取较为全面的JVM运行数据,帮助应用开发人员发现与分析问题,为应用开发优化提供参考依据。

UAVStack已在Github上开放源码,并提供了安装部署、架构说明和用户指南等双语文档。

官方网站:https://uavorg.github.io/main/

开源地址:https://github.com/uavorg

作者:张明明

首发于:UAVStack智能运维

UAVStack JVM监控分析工具:图形化展示采集及分析监控数据的更多相关文章

  1. Nginx filebeat+logstash+Elasticsearch+kibana实现nginx日志图形化展示

    filebeat+logstash+Elasticsearch+kibana实现nginx日志图形化展示   by:授客  QQ:1033553122   测试环境 Win7 64 CentOS-7- ...

  2. 利用Python+pyecharts+tushare图形化展示股票历史财务信息

    在微信或其他平台上,经常能看到别人推荐股票,分析的头头是道,让自己懊恼于没有早点关注到这只股票,好像错失了几个亿.但是投资股票又忌讳听消息跟风,总不能看到别人推荐自己就无脑买入. 看到了一只股票,自己 ...

  3. DL4J实战之六:图形化展示训练过程

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<DL4J实战>系列的第六 ...

  4. 日志分析工具、日志管理系统、syslog分析

    日志分析工具.日志管理系统.syslog分析 系统日志(Syslog)管理是几乎所有企业的重要需求.系统管理员将syslog看作是解决网络上系统日志支持的系统和设备性能问题的关键资源.人们往往低估了对 ...

  5. Sparrow-WiFi:一款Linux平台下的图形化WiFi及蓝牙分析工具

    工具概述 Sparrow-wifi本质上一款针对下一代2.4GHz和5GHz的WiFi频谱感知工具,它不仅提供了GUI图形化用户界面,而且功能更加全面,可以代替类似inSSIDer和linssid之类 ...

  6. iNeuOS工业互联平台,WEB组态(iNeuView)集成图报组件,满足实时数据图形化展示的需求

    目       录 1.      概述... 1 2.      平台演示... 2 3.      应用过程... 3 4.      实时数据展示效果... 5 1.   概述 市场和开源社区有 ...

  7. 获取本地的jvm信息,进行图形化展示

    package test1; import java.lang.management.CompilationMXBean; import java.lang.management.GarbageCol ...

  8. Windows性能监控perfmon工具的使用和性能指标的分析

    Windows性能监控工具perfmon的使用和性能指标分析 一.perfmon提供图表化的实时的性能监视器.性能日志.警报管理,能监控CPU的使用率.内存使用率.磁盘I/O(磁盘的读写速度).网络I ...

  9. zookeeper的图形化展示

    1.ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供 ...

随机推荐

  1. Docker--部署mongodb+.netcore+nginx

    前言 公司租用的阿里云的服务器,每年会更换一次,很麻烦,还容易出问题,想会不会有更方便的方式来迁移服务器,就这样接触到了docker. 参考网上的一些资料,自己琢磨了一段时间,记录下docker的部署 ...

  2. conan使用(五)--打包chromium-base

    现在我们就利用之前学习到的conan的使用方法,将chromium中的base库打包成一个conan包. 1. 准备源码 chromium本身是通过gn来编译的,这个目前conan并不支持.所以需要把 ...

  3. Kubernetes 集群分析查看内存,CPU

    Kubernetes方式 top命令查看所有pod,nodes中内存,CPU使用情况 查看pod root @ master ➜ ~ kubectl top pod -n irm-server NAM ...

  4. 初次运行git时的配置

    初次运行git时的配置 # 参考文档 https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%88%9D%E6%AC%A1%E8%BF%90%E8% ...

  5. JDOJ 1775: 求N!中0的个数

    JDOJ 1775: 求N!中0的个数 JDOJ传送门 Description 求N!结果中末尾0的个数 N! = 1 * 2 * 3 ....... N Input 输入一行,N(0 < N ...

  6. Leetcode142 环形链表

    很多题解没有讲清楚非环部分的长度与相遇点到环起点那部分环之间为何是相等的这个数学关系.这里我就补充下为何他们是相等的.假设非环部分的长度是x,从环起点到相遇点的长度是y.环的长度是c.现在走的慢的那个 ...

  7. MySql5.7InnoDB全文索引(针对中文搜索)

    1.ngram and MeCab full-text parser plugins 全文检索在MySQL里面很早就支持了,只不过一直以来只支持英文.缘由是他从来都使用空格来作为分词的分隔符,而对于中 ...

  8. Jike_Time

    数据分析全景图 1. 数据采集.它是我们的原材料,也是最“接地气”的部分,因为任何分析都要有数据源. 2. 数据挖掘.它可以说是最“高大上”的部分,也是整个商业价值所在.之所以要进行数据分析,就是要找 ...

  9. DBLog: A Generic Change-Data-Capture Framework

    转自:https://medium.com/netflix-techblog/dblog-a-generic-change-data-capture-framework-69351fb9099b 期待 ...

  10. nexus php composer host 模式repo 试用

    前边有介绍以及运行过基于nexus proxy 模式的php composer(其中也有一些坑),以下是关于host 模式的 简单使用 环境准备 docker-compose 文件   version ...