`

基于jmx_api采集jvm遇到坑

阅读更多

        it里本没有坑,一不小心掉进去了,坑就出来了。这次是由于自已的不懂,才掉进去了。

        在测试环境和线上一样的配置,却出现有的数据采集不到情况,请看下图

 

  我采用的架构方式是:zabbix3.0+java_gateway_jmx。开始填坑debug之旅行。

  1.最开始以为是配置的key出错,一一核对,两个环境的配置都一样的。排除

  2.debug zabbix的所有信息,extended debugging (produces even more information),没有收获。排除

  3.debug  java_gate的log,没收获。排除

  4.debug  服务器的jmx,还是没收攻。

  5.下了cmdline-jmx....jar,进行debug,下载的地址是:

      http://dldx.csdn.net/fd.php?i=996982995519160&s=6b88543944aebc3b8a18d3b92109edac

 用法是:Usage: java -jar cmdline-jmxclient.jar USER:PASS HOST:PORT [BEAN] [COMMAND]

  cmdline-jmx这种方也没提供多少有用的信息,返回信息如下

   Usage: Usage (type=javax.management.openmbean.CompositeData)

 PeakUsage: PeakUsage (type=javax.management.openmbean.CompositeData)

 MemoryManagerNames: MemoryManagerNames (type=[Ljava.lang.String;)

 UsageThreshold: UsageThreshold (type=long)

 UsageThresholdExceeded: UsageThresholdExceeded (type=boolean)

 UsageThresholdCount: UsageThresholdCount (type=long)

 UsageThresholdSupported: UsageThresholdSupported (type=boolean)

 CollectionUsageThreshold: CollectionUsageThreshold (type=long)

 CollectionUsageThresholdExceeded: CollectionUsageThresholdExceeded (type=boolean)

 CollectionUsageThresholdCount: CollectionUsageThresholdCount (type=long)

 CollectionUsage: CollectionUsage (type=javax.management.openmbean.CompositeData)

 CollectionUsageThresholdSupported: CollectionUsageThresholdSupported (type=boolean)

 Valid: Valid (type=boolean)

 Name: Name (type=java.lang.String)

 Type: Type (type=java.lang.String)

 ObjectName: ObjectName (type=javax.management.ObjectName)

Operations:

 resetPeakUsage: resetPeakUsage

  Parameters 0, return type=void

  做到这里之后,发现在哪里都正确,因为没找到错误,也许潜得太深了。

6.开始怀疑javae的工作的进程数是否开得过少,默认是5,于是把这两个参数

      StartPollers=40

      StartJavaPollers=40

       重启----没效果

7.整个流程下来,都没有发现明显的异常。最讨厌的就是这些情况

部分错误

没有明显异常,error

google一圈没发现好的建议。

于是低头思看图...........举头望窗外.............

8.最后采取对这两个环境参数的更进一步比对。由于某些原因,就不贴出来了。成功往往来自于细节。经过各种测试排除之后,终于发现启动的时候,gc的机制不一样,测试用的是UseParallelOldGC

线上用的是CMSScavengeBeforeRemark

发现这两个不同,于是改变key写法,果真,有关gc的值采集到,然后联想到old gen的值也采集到了。

突然想明白了,采用gc机制的不同,key的参数不一样,也会影响到对jvm中新生代,持久代,老年代信息采集。

多么伤痛的领悟。

UseParallelOldGC的写法

java.lang:type=GarbageCollector,name= ParNew","CollectionCount"

 

  CMSScavengeBeforeRemark的写法

        java.lang:type=GarbageCollector,name=ConcurrentMarkSweep","CollectionCount“

总结:

为什么会踩到坑。

对jvm整个流程一知半解,gc机制不深入

对key的写法,不熟悉,这方面在google搜一圈和jdk官网上,没发现很全很详细的jmx_api

忽略某些细节

最后来一张大图,虽还没做完,不过问题已经定位出来了



 

 

  • 大小: 32.4 KB
  • 大小: 36.2 KB
  • 大小: 50.8 KB
分享到:
评论

相关推荐

    jmx_prometheus_javaagent-0.12.0.jar

    代理Java包,用于生成JVM的健康的数据,jmx_prometheus_javaagent-0.12.0.jar

    jmx_prometheus_javaagent-0.13.0.jar

    https://pan.baidu.com/s/15TPev6CpXCRIPvXCIreMzA sbnh

    jmx_examples.rar_Java 8_jmx_jmx examples_jmx main_jmx_examples

    在这个"jmx_examples.rar"压缩包中,包含了多个JMX的简单示例,这将帮助我们了解如何在Java 8中使用JMX。 1. **JMX基础知识**: - JMX的核心概念包括MBean(Managed Beans)、MBean Server和MBean操作。MBean是...

    jmx_examples.zip_jmx_examples

    在"jmx_examples.zip_jmx_examples"这个压缩包中,我们可能会找到一系列示例代码,这些代码展示了如何利用JMX在Java 5.0及更高版本中实现管理功能。 JMX的核心概念包括MBeans(Managed Beans)、代理(Agents)和...

    jmx-1_2_1-ri.zip jmx_remote-1_0_1_03-ri.zip jmx-1_1-mr-spec.zip

    2. **jmx_remote-1_0_1_03-ri.zip**:此文件是JMX Remote API的一个实现,版本为1.0.1_03。JMX Remote API扩展了基本的JMX,使得管理操作可以跨越网络进行,允许远程监控和管理Java应用程序。这个版本可能包含了更新...

    JMX.rar_jmx_osgi

    在"JMX.rar_jmx_osgi"这个压缩包中,我们很可能找到了与JMX相关的开发资源,包括五个常用的JMX库的jar包和一些示例代码。 1. **JMX基础**:JMX的核心概念包括MBeans(Managed Beans)、Management Agents(MBeans ...

    jmx_access&password;

    在使用JMC时,`jmx_access&password;` 文件起着至关重要的作用,特别是与JMX(Java Management Extensions)安全相关的配置有关。 JMX 是Java平台的一个标准接口,允许开发者管理应用程序、设备和服务。它提供了一...

    jmx_tomcat_jboss

    【标题】:“jmx_tomcat_jboss”指的是在Java管理扩展(JMX)框架下对Tomcat和JBoss服务器的管理和监控。 【描述】:Java管理扩展(JMX)是一种标准,允许开发者创建、管理和监控Java应用程序的组件。在这个上下...

    jmx_exporter:一个通过HTTP公开JMX Bean以供Prometheus使用的过程

    java -javaagent:./jmx_prometheus_javaagent-0.15.0.jar=8080:config.yaml -jar yourJar.jar 现在可以在访问 要将Java代理绑定到特定IP,请将端口号更改为host:port 。 请参阅./run_sample_httpserver.sh ,以...

    jmx_remote-1_0_1_03.ri.zip

    下载jmx_remote-1_0_1_03-ri.zip文件,里面包括:doc,examples,lib。其中lib里面包括:jmxremote.jar,jmxremote_optional.jar和rmissl.jar。这是我从oracle官网上下载的,它本身就是免费的,所以在这里提供给大家...

    jmx_tristan_notification

    标题“jmx_tristan_notification”涉及的是Java管理扩展(Java Management Extensions, JMX)技术,一个用于管理和监控Java应用程序的框架。在这个特定的上下文中,它可能与博主Tristan分享的一篇博客文章有关,该...

    JMXinAction.rar_action _jmx_jmx in action

    JMX in Action JMX in Action

    JMX_in_Action源码

    《JMX in Action》是一本深入探讨Java管理扩展(Java Management Extensions, JMX)技术的专业书籍。源码的提供为读者提供了实践经验,帮助理解和运用书中的理论知识。JMX是Java平台上的一个标准,用于管理和监控...

    JMX_1_3_specification

    JMX规范还讨论了如何在不同的Java虚拟机(JVM)实例之间进行通信,以及如何在不同的平台和应用程序之间使用JMX技术进行统一的管理和监控。规范中还定义了测试和兼容性工具包(TCK),用于确保第三方的实现符合JMX...

    jmx_remote-1_0_1_03-bin

    下载jmx_remote-1_0_1_03-ri.zip文件,里面包括:doc,examples,lib。其中lib里面包括:jmxremote.jar,jmxremote_optional.jar和rmissl.jar。这是我从oracle官网上下载的,它本身就是免费的,所以在这里提供给大家...

    JMX-how-to-use.rar_jmx_服务器_远程监控 文件

    Java Management Extensions(JMX)是Java平台上的一个标准技术,用于管理和监控应用程序、操作系统和网络设备等资源。本文档“JMX如何使用”深入探讨了如何利用JMX在Java Web环境中进行远程服务器管理与监控。 1. ...

    jmx_remote-1_0-fr-ri

    "jmx_remote-1_0-fr-ri"这个标题可能指的是JMX远程访问的1.0版本,法语版的参考实现(Reference Implementation),这通常包括了支持远程管理JMX代理所需的所有类和库。 在描述中提到的学习JMX时找不到必要的jar包...

    jmx_in_action随书源码

    2. **MBean代理**:代码可能包含使用JMX API创建MBean代理类的示例,使得可以在程序代码中直接操作远程MBeans,而无需直接与MBeanServer交互。 3. **通知机制**:JMX支持发布和订阅通知,源码可能包含如何发送和...

    jmx-jvm配置

    4. **自定义客户端**: 开发者也可以创建自己的JMX客户端,利用JMX API与MBean Server交互。 总的来说,JMX-JVM配置是一项强大的功能,它使得开发者和管理员能够实时监控和调整Java应用的运行状态,从而优化性能、...

    JDK_API_1.6

    **JDK API 1.6 知识点详解** JDK (Java Development Kit) 是Java编程语言的核心组件,它包含了开发和运行Java应用程序...通过阅读和学习JDK_API_1.6_zh和j2se6.chm中的内容,开发者可以更好地掌握这个版本的Java技术。

Global site tag (gtag.js) - Google Analytics