• 使用Python查询JMX


    一、介绍

    我们知道 java 项目中的 JMX 接口信息是十分有用的,我们可以提取这些信息来分析或告警。但是 JMX 的 API 只在 java 中实现,因此,找到一个 Python 代码调用 Java 代码的桥梁是非常有意义的。JPype 就是这样的一个工具,利用它可以使 Python 程序方便的调用 Java 代码,从而扩充 Python 语言的能力,弥补 Python 语言的不足。本文介绍了如何利用 JPype 来对JMX接口进行访问查询。官方地址:http://jpype.sourceforge.net/

    二、安装

    我们这里用pip安装简单一些。这里注意名称是JPype1。

    # pip install JPype1
    

    三、示例

    #!/usr/bin/python
    import jpype
    from jpype import java
    from jpype import javax
    
    HOST='gf0'
    PORT=8386
    USER='admin'  # 这里没有配安全认证的话可以不填
    PASS='mypass' # 同上
    
    URL = "service:jmx:rmi:///jndi/rmi://%s:%d/jmxrmi" % (HOST, PORT)
    #this it the path of your libjvm /usr/lib/jvm/sun-jdk-1.6/jre/lib/amd64/server/libjvm.so on linux
    jpype.startJVM("/System/Library/Frameworks/JavaVM.framework/Libraries/libjvm_compat.dylib") # 这里写对应使用的jdk路径
    java.lang.System.out.println("JVM load OK")
    
    jhash = java.util.HashMap()
    jarray=jpype.JArray(java.lang.String)([USER,PASS])
    jhash.put (javax.management.remote.JMXConnector.CREDENTIALS, jarray);
    jmxurl = javax.management.remote.JMXServiceURL(URL)
    jmxsoc = javax.management.remote.JMXConnectorFactory.connect(jmxurl,jhash)
    connection = jmxsoc.getMBeanServerConnection();
    
    
    object="java.lang:type=Threading"  # 查询线程
    attribute="ThreadCount"
    attr=connection.getAttribute(javax.management.ObjectName(object),attribute)
    print  attribute, attr
    
    #Memory is a special case the answer is a Treemap in a CompositeDataSupport
    object="java.lang:type=Memory"     # 查询内存
    attribute="HeapMemoryUsage"
    attr=connection.getAttribute(javax.management.ObjectName(object),attribute)
    print attr.contents.get("used")
    

    这里只列举了几个指标。在java mission control上可以看到完整的各个指标,都可以拿来查询分析。

    四、参考地址

    http://blog.nobugware.com/post/2010/11/08/jmx-query-python-cpython/

  • 相关阅读:
    对vue-cli各个目录的理解 和 在 vue 中使用json-server
    发论文的一些常见问题
    latex初步入门:springer llncs
    docker tomcat8 mysql8部署常见错误
    docker快速部署本地项目到服务器(tomcat8+mysql8)
    IDEA构建spring项目
    [b0042] python 归纳 (二七)_gui_tkinter_基本使用
    [b0038] python 归纳 (二三)_多进程数据共享和同步_队列Queue
    springboot进入html
    HbaseShell启动
  • 原文地址:https://www.cnblogs.com/bugsbunny/p/8397715.html
Copyright © 2020-2023  润新知