python脚本JMX获取JVM状态

主要原理:

主要通过python库jmxquery,jmxquery是通过python脚本调用它里面的JAR包的JAVA方法连接JMX端口,以获取JVM的状态。

jmxquery github:

https://github.com/dgildeh/JMXQuery/tree/master/python

安装jmxquery:

$ pip install jmxquery
Collecting jmxqueryDownloading https://files.pythonhosted.org/packages/93/02/b079e4df07f4c23bc5759742c488673008327dcd14713b519a96c7cc3e94/jmxquery-0.5.0.tar.gz
Installing collected packages: jmxqueryRunning setup.py install for jmxquery: startedRunning setup.py install for jmxquery: finished with status 'done'
Successfully installed jmxquery-0.5.0
You are using pip version 19.0.3, however version 19.2.3 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.

 PYTHON脚本:

只要指定JMX地址即可。

from jmxquery import JMXConnection, JMXQueryjmxConnection = JMXConnection("service:jmx:rmi:///jndi/rmi://127.0.0.1:8889/jmxrmi")## memory
type_str = "Memory"
beanName_str = "java.lang:type={0}".format(type_str)
for atrributeName in ["HeapMemoryUsage","NonHeapMemoryUsage"]:jmxQuery = [JMXQuery(mBeanName=beanName_str,attribute=atrributeName,     metric_name="Type:{type}_{attribute}_{attributeKey}")]metrics = jmxConnection.query(jmxQuery)for metric in metrics:print(f"{metric.to_query_string()} ({metric.value_type}) = {metric.value}") ## memoryPool
type_str = "MemoryPool"
for name in ["Code Cache","Metaspace","Compressed Class Space","Par Eden Space","Par Survivor Space","PS Eden Space","PS Old Gen","PS Perm Gen","PS Survivor Space","CMS Old Gen","CMS Perm Gen","Perm Gen"]: beanName_str = "java.lang:type={0},name={1}".format(type_str, name)jmxQuery = [JMXQuery(mBeanName=beanName_str,attribute="Usage",  metric_name="Type:{type}_{attribute}_{attributeKey}")]metrics = jmxConnection.query(jmxQuery)for metric in metrics:print(f"{metric.to_query_string()} ({metric.value_type}) = {metric.value}")## GarbageCollector 其中时间单位是s
type_str = "GarbageCollector"
for name in ["Copy","MarkSweepCompact","PS Scavenge","ConcurrentMarkSweep","ParNew","PS MarkSweep"]:beanName_str = "java.lang:type={0},name={1}".format(type_str, name)for atrributeName in ["CollectionTime","CollectionCount"]:jmxQuery = [JMXQuery(mBeanName=beanName_str,attribute=atrributeName,  metric_name="Type:{type}_{attribute}")]metrics = jmxConnection.query(jmxQuery)for metric in metrics:print(f"{metric.to_query_string()} ({metric.value_type}) = {metric.value}")## Threading
jmxQuery = [JMXQuery(mBeanName="java.lang:type=Threading",attribute="ThreadCount",  metric_name="Type:{type}_{attribute}")]
metrics = jmxConnection.query(jmxQuery)
for metric in metrics:print(f"{metric.to_query_string()} ({metric.value_type}) = {metric.value}")

运行输出:

Administrator@USER-TJY MINGW64 /f/work-project/jvm-monitor/doc/weblogic (master)
$ python jmx.py
Type:Memory_HeapMemoryUsage_committed==java.lang:type=Memory/HeapMemoryUsage/committed (Long) = 1820327936
Type:Memory_HeapMemoryUsage_init==java.lang:type=Memory/HeapMemoryUsage/init (Long) = 266338304
Type:Memory_HeapMemoryUsage_max==java.lang:type=Memory/HeapMemoryUsage/max (Long) = 3787980800
Type:Memory_HeapMemoryUsage_used==java.lang:type=Memory/HeapMemoryUsage/used (Long) = 877956624
Type:Memory_NonHeapMemoryUsage_committed==java.lang:type=Memory/NonHeapMemoryUsage/committed (Long) = 155746304
Type:Memory_NonHeapMemoryUsage_init==java.lang:type=Memory/NonHeapMemoryUsage/init (Long) = 2555904
Type:Memory_NonHeapMemoryUsage_max==java.lang:type=Memory/NonHeapMemoryUsage/max (Long) = -1
Type:Memory_NonHeapMemoryUsage_used==java.lang:type=Memory/NonHeapMemoryUsage/used (Long) = 151725664
Type:MemoryPool_Usage_committed==java.lang:type=MemoryPool,name=Code Cache/Usage/committed (Long) = 45088768
Type:MemoryPool_Usage_init==java.lang:type=MemoryPool,name=Code Cache/Usage/init (Long) = 2555904
Type:MemoryPool_Usage_max==java.lang:type=MemoryPool,name=Code Cache/Usage/max (Long) = 251658240
Type:MemoryPool_Usage_used==java.lang:type=MemoryPool,name=Code Cache/Usage/used (Long) = 44772480
Type:MemoryPool_Usage_committed==java.lang:type=MemoryPool,name=Metaspace/Usage/committed (Long) = 98484224
Type:MemoryPool_Usage_init==java.lang:type=MemoryPool,name=Metaspace/Usage/init (Long) = 0
Type:MemoryPool_Usage_max==java.lang:type=MemoryPool,name=Metaspace/Usage/max (Long) = -1
Type:MemoryPool_Usage_used==java.lang:type=MemoryPool,name=Metaspace/Usage/used (Long) = 95575976
Type:MemoryPool_Usage_committed==java.lang:type=MemoryPool,name=Compressed Class Space/Usage/committed (Long) = 12238848
Type:MemoryPool_Usage_init==java.lang:type=MemoryPool,name=Compressed Class Space/Usage/init (Long) = 0
Type:MemoryPool_Usage_max==java.lang:type=MemoryPool,name=Compressed Class Space/Usage/max (Long) = 1073741824
Type:MemoryPool_Usage_used==java.lang:type=MemoryPool,name=Compressed Class Space/Usage/used (Long) = 11446056
Type:MemoryPool_Usage_committed==java.lang:type=MemoryPool,name=PS Eden Space/Usage/committed (Long) = 1417150464
Type:MemoryPool_Usage_init==java.lang:type=MemoryPool,name=PS Eden Space/Usage/init (Long) = 66584576
Type:MemoryPool_Usage_max==java.lang:type=MemoryPool,name=PS Eden Space/Usage/max (Long) = 1417150464
Type:MemoryPool_Usage_used==java.lang:type=MemoryPool,name=PS Eden Space/Usage/used (Long) = 580131288
Type:MemoryPool_Usage_committed==java.lang:type=MemoryPool,name=PS Old Gen/Usage/committed (Long) = 401604608
Type:MemoryPool_Usage_init==java.lang:type=MemoryPool,name=PS Old Gen/Usage/init (Long) = 177733632
Type:MemoryPool_Usage_max==java.lang:type=MemoryPool,name=PS Old Gen/Usage/max (Long) = 2841116672
Type:MemoryPool_Usage_used==java.lang:type=MemoryPool,name=PS Old Gen/Usage/used (Long) = 308996216
Type:MemoryPool_Usage_committed==java.lang:type=MemoryPool,name=PS Survivor Space/Usage/committed (Long) = 1572864
Type:MemoryPool_Usage_init==java.lang:type=MemoryPool,name=PS Survivor Space/Usage/init (Long) = 11010048
Type:MemoryPool_Usage_max==java.lang:type=MemoryPool,name=PS Survivor Space/Usage/max (Long) = 1572864
Type:MemoryPool_Usage_used==java.lang:type=MemoryPool,name=PS Survivor Space/Usage/used (Long) = 1277952
Type:GarbageCollector_CollectionTime==java.lang:type=GarbageCollector,name=PS Scavenge/CollectionTime (Long) = 46496
Type:GarbageCollector_CollectionCount==java.lang:type=GarbageCollector,name=PS Scavenge/CollectionCount (Long) = 6871
Type:GarbageCollector_CollectionTime==java.lang:type=GarbageCollector,name=PS MarkSweep/CollectionTime (Long) = 8398
Type:GarbageCollector_CollectionCount==java.lang:type=GarbageCollector,name=PS MarkSweep/CollectionCount (Long) = 5
Type:Threading_ThreadCount==java.lang:type=Threading/ThreadCount (Integer) = 114

JVM监控:python脚本JMX获取JVM状态相关推荐

  1. python 自动获取所有设备信息-使用Python脚本来获取Cisco设备信息的示例

    今天发现一个使用python写的管理cisco设备的小框架tratto,可以用来批量执行命令. 下载后主要有3个文件: Systems.py 定义了一些不同设备的操作系统及其常见命令. Connect ...

  2. 使用java运行Python脚本并获取返回值

    java运行Python脚本并获取返回值 java运行Python脚本并获取返回值 使用runtime类实现在java中运行Python脚本,话不多说,直接上代码 java运行Python脚本并获取返 ...

  3. monit监控python脚本

    使用monit监控Python脚本时,要注意:start中创建单独的进程,并运行到后台,否则monit会认为程序超时. 主要有两种方式: 使用su命令 check process 1-wire wit ...

  4. Day357358359360.JVM监控及诊断工具-GUI -JVM

    JVM监控及诊断工具-GUI 实际中,你下面有1-2款会用即可 一.工具概述 二.JConsole 了解 1.基本概述 2.启动 在jdk安装目录中找到jconsole.exe,双击该可执行文件就可以 ...

  5. python request post 数组_[pve][python]用python3获取pve状态信息

    手头的Proxmox VE集群和节点越来越多,需要考虑统一管理了,先定一个小目标--集中状态监控. 以前写过检测ceph并用钉钉报警的bash脚本,这次换上洋气的方式,用python来通过pve的ap ...

  6. linux下的EC20的监控python脚本

    工作原因使用到EC20模块来给设备提供网络,使用写了个监控4G网络的脚本来监控网络状态,进行保活 该脚本可以将相关网络参数定时写入日志文件中,起到检测网络状态的作用. 安装工具与python串口库 a ...

  7. 用Python脚本能获取Wifi密码么?能。

    注意,本文不是破解 WIFI 密码,当然你把程序发给别人再获取对方密码,那是社会工程学. 文章目录 ⛳️ 实战场景与 `subprocess` 模块介绍 ⛳️ Python 获取本地 Wifi 密码 ...

  8. python实时脚本_web 监控 python 脚本

    Redis监控工具,命令和调优 Redis监控工具,命令和调优1.图形化监控 因为要对Redis做性能测试,发现了GitHub上有个python写的RedisLive监控工具评价不错.结果鼓捣了半天, ...

  9. python 调用控制台并获取返回结果_Java调用Python脚本并获取返回值

    在Java程序中有时需要调用Python的程序,这时可以使用一般的PyFunction来调用python的函数并获得返回值,但是采用这种方法有可能出现一些莫名其妙的错误,比如ImportError.在 ...

最新文章

  1. AT5198 01 Matrix(构造)
  2. 苹果手机如何恢复联系人呢?快速的恢复
  3. java stringBuilder的用法
  4. centos使用git安装nvm
  5. matlab中函数的公式计算,MATLAB怎样定义函数(入门) 有一函数 f(x,y)=x^2+sinxy+2y , 写一程序, 输入自变量的值,输出函数值....
  6. oracle rac启动关闭,Oracle RAC启动及关闭步骤
  7. 逍遥安卓linux版,逍遥安卓5.1.1内测版下载
  8. (笔记)VC6插件安装(VC6LineNumberAddin)
  9. 【学生研究课题】CSDN博客数据获取、分析、分享
  10. openai-gpt_GPT-3对非技术专业人员意味着什么
  11. 关闭安卓系统导航栏右下角自动旋转按钮
  12. 恒玄BES调试笔记-BES2500啸叫howling
  13. 关于0x80070091 目录不是空的
  14. YYYY-MM-dd和 yyyy-MM-dd的区别
  15. android开发--mp3播放器项目源代码(xml文件解析,.lrc,.mp3文件下载,同时显示歌词)
  16. C4D中使用Redshift渲染器翻转贴图
  17. matlab 4轴机器人建模,SCARA机器人运动学分析及MATLAB建模仿真.pdf
  18. 阿里P8高级专家强烈推荐2022Java程序员进阶必读书单
  19. 号码数字组合生成程序软件 可按照各种条件筛选过滤计算
  20. 【ReID】局部特征

热门文章

  1. 无需root即可Android手机映射到电脑玩手机网游,做手机办公(有源码及效果视频下载)
  2. 【编程面试系列】字符串总结
  3. 自学爬虫项目(二)一一利用selenium模拟淘宝登录,爬取商品数据
  4. C++文本文件读写操作详解
  5. 第3章 为Jenkins添加静态agent节点
  6. 认真学习分布式应用中的分布式锁
  7. 开公司的心得-租房子,得注意!
  8. 活动报名 | 北京交通大学魏云超:连续学习下像素理解的相关算法介绍
  9. Windows账户设置
  10. 前端 鼠标悬停事件 是否显示提示框 onmouseover onmouseout