一飞开源
阅读514

[开源]一个提供Java虚拟机和操作系统服务式监控的工具,功能丰富

一飞开源,介绍创意、新奇、有趣、实用的开源应用、系统、软件、硬件及技术,一个探索、发现、分享、使用与互动交流的开源技术社区平台。致力于打造活力开源社区,共建开源新生态!

一、开源项目简介

JVMM(JVM Monitor)是一个提供Java虚拟机和操作系统服务式监控的工具,拥有丰富的数据采集功能:OS(内存、CPU、磁盘状态及IO、网卡状态及IO等)、 JVM(内存、线程、线程池、内存池、GC、类加载器等),还提供生成火焰图、Java代码热更、反编译等功能。适合用于服务健康监控、程序调优、问题排查、性能测试等场景。

二、开源协议

使用Apache-2.0开源协议

三、界面展示

示例

客户端工具采集数据示例

生成火焰图示例

代码调用示例

  • API调用示例
  • Server启动使用示例
  • Jvmm连接工具使用示例

Dashboard应用示例

通用工具

项目内部有些组件是可以脱离项目使用的,轻量且上手简单

  • jvmm-convey 一个独立的、轻量的、通用的网络通信开发工具
  • jvmm-aop一个面向切面编程开发工具
  • jvmm-common内置一些常用的工具类
详细内容请查看 README.md 文档。

四、功能概述

功能支持

  • 支持Java虚拟机数据采集:
  • 进程信息
  • 内存信息:堆内、堆外内存使用情况,Manager、Pool信息
  • 线程信息:堆栈、锁、死锁检测、CPU Time、Wait Time等
  • 线程池信息:配置参数、状态、任务统计等
  • GC信息:分代收集器信息、GC次数、GC耗时等
  • 类加载信息:类加载统计、类加载器、JIT
  • 支持操作系统数据采集:内存状态、CPU负载、磁盘状态及IO吞吐率、网卡状态及IO吞吐率、端口检测
  • 支持火焰图生成,采样事件包括CPU、内存分配、线程栈、Java方法及native方法调用栈等
  • 支持Java代码反编译生成
  • 支持Java代码热更新(可指定ClassLoader)
  • 支持远程执行GC
  • 支持远程执行JDK自带工具命令:jstat、jstack、jinfo、jmap、jcmd等
  • 提供三种服务模式
  • jvmm服务:独有RPC协议,需使用jvmm客户端远程连接调用,安全可靠
  • http服务:提供Http接口,不限开发语言远程调用
  • 哨兵服务:定时采集数据并上报给订阅者
  • 支持无感知跨进程attach到Java进程,远程连接,Java Agent启动,server独立运行启动,可自定义开发
  • 支持 JDK 8+
  • 支持 Linux/Mac/Windows

五、技术选型

快速体验

请前往releases下载最新版的jvmm,然后将其解压

小Tips:Jvmm 部分功能依赖于本地环境中的 jdk,请确保你的环境中安装的是jdk而不只是 jre,简单验证:在你的环境中执行jps -l, 如果可正常执行并输出结果则表示环境OK,否则在运行jvmm时可能会出现报错

首先执行下面指令生成服务jar包


java -jar jvmm.jar -m jar -s

然后启动server,启动时请注意你的jdk版本


# 启动server,jdk 8使用下面命令
java -jar jvmm-server.jar

# jdk 9+ 请使用下面命令
java -jar --add-opens java.base/jdk.internal.loader=ALL-UNNAMED --add-opens jdk.zipfs/jdk.nio.zipfs=ALL-UNNAMED --add-opens java.management/sun.management=ALL-UNNAMED jvmm-server.jar

如果启动成功 Jvmm Server 将会默认运行在 5010 端口,然后你需要在当前目录新起一个窗口执行:


java -jar jvmm.jar -m client -a 127.0.0.1:5010

如果连接 server 成功那么你就进入了客户端模式,你可以输入下面指令去采集进程数据,当然输入help可以查看该模式下所有可执行指令的使用方法。


info -t process

这里提供了Jvmm client模式下采集的数据样例,Jvmm提供的功能远不止如此,更多功能请阅读 Jvmm 使用文档。

使用文档

Jvmm的核心数据采集功能在 core 模块,提供的服务式功能在 server 模块,根据你的使用场景可选择下面两种使用方式:

  • 直接使用 Jvmm server
  • 基于 core 模块二次开发(功能更全)
详细内容请查看 README.md 文档。

六、源码地址

源码下载

关注下面的标签,发现更多相似文章

一飞开源
发布了 篇专栏 · 获取点赞 · 获取阅读

评论

查看更多
相关推荐
关于作者
一飞开源
获得点赞 100
文章被阅读 1000
相关文章