elasticsearch,amazon-cloudwatch,Java,Amazon Web Services,elasticsearch,Amazon Cloudwatch" /> elasticsearch,amazon-cloudwatch,Java,Amazon Web Services,elasticsearch,Amazon Cloudwatch" />

Java 如何从EC2实例收集JMX度量并将其填充到AWS Cloudwatch中

Java 如何从EC2实例收集JMX度量并将其填充到AWS Cloudwatch中,java,amazon-web-services,elasticsearch,amazon-cloudwatch,Java,Amazon Web Services,elasticsearch,Amazon Cloudwatch,我有下面的设置到位 EC2实例,安装以下包以收集度量 云监视代理 cloudwatch插件 收集 收集java 集合通用jmx 弹性搜索 现在,我的目的是收集Elasticsearch jmx相关指标(使用的堆空间、gc时间等),并将它们发布到cloudwatch,这是我无法做到的。 我可以将其他指标(mem、df、cpu)刮到cloudwatch,但在cloudwatch上没有看到jmx指标的痕迹 是否可以收集弹性搜索jmx指标,我的配置是否正确,请帮助 我不熟悉jmx配置 请查找我的coll

我有下面的设置到位

EC2实例,安装以下包以收集度量

  • 云监视代理
  • cloudwatch插件
  • 收集
  • 收集java
  • 集合通用jmx
  • 弹性搜索
  • 现在,我的目的是收集Elasticsearch jmx相关指标(使用的堆空间、gc时间等),并将它们发布到cloudwatch,这是我无法做到的。 我可以将其他指标(mem、df、cpu)刮到cloudwatch,但在cloudwatch上没有看到jmx指标的痕迹

    是否可以收集弹性搜索jmx指标,我的配置是否正确,请帮助 我不熟悉jmx配置

    请查找我的collectd-cloudwatch.conf配置

    <Plugin "java">
    JVMArg "-Djava.class.path=/usr/share/collectd/java/collectd-api.jar:/usr/share/collectd/java/generic-jmx.jar"
    LoadPlugin "org.collectd.java.GenericJMX"
    <Plugin "GenericJMX">
      <MBean "gc-count">
        ObjectName "java.lang:type=GarbageCollector,*"
        InstancePrefix "gc-"
        InstanceFrom "name"
        <Value>
          Type "derive"
          Table false
          Attribute "CollectionCount"
          InstancePrefix "count"
        </Value>
      </MBean>
       <MBean "gc-time">
        ObjectName "java.lang:type=GarbageCollector,*"
        InstancePrefix "gc-"
        InstanceFrom "name"
        <Value>
          Type "derive"
          Table false
          Attribute "CollectionTime"
          InstancePrefix "time"
        </Value>
      </MBean>
      <MBean "memory_pool">
        ObjectName "java.lang:type=MemoryPool,*"
        InstancePrefix "memory_pool-"
     InstanceFrom "name"
        <Value>
          Type "memory"
          Table true
          Attribute "Usage"
        </Value>
      </MBean>
       <MBean "memory-heap">
        ObjectName "java.lang:type=Memory"
        InstancePrefix "memory-heap"
        <Value>
          Type "memory"
          Table true
          Attribute "HeapMemoryUsage"
        </Value>
      </MBean>
      <MBean "memory-nonheap">
        ObjectName "java.lang:type=Memory"
        InstancePrefix "memory-nonheap"
        <Value>
          Type "memory"
          Table true
          Attribute "NonHeapMemoryUsage"
        </Value>
      </MBean>
       <MBean "thread">
        ObjectName "java.lang:type=Threading"
        InstancePrefix "threading"
        <Value>
          Type "gauge"
          Table false
          Attribute "ThreadCount"
          InstancePrefix "count"
        </Value>
      </MBean>
      <MBean "thread-daemon">
        ObjectName "java.lang:type=Threading"
        InstancePrefix "threading"
        <Value>
          Type "gauge"
          Table false
          Attribute "DaemonThreadCount"
          InstancePrefix "count-daemon"
        </Value>
      </MBean>
      <Connection>
        ServiceURL "service:jmx:rmi:///jndi/rmi://localhost:9200/ ---> elasticsearch running with https
        Collect "memory_pool"
        Collect "memory-heap"
        Collect "memory-nonheap"
        Collect "gc-count"
        Collect "gc-time"
        Collect "thread"
        Collect "thread-daemon"
        User "kibana"
        Password "kibana"
      </Connection>
    </Plugin>
    </Plugin>
    

    我相信最好的办法是使用普罗米修斯。我相信最好的办法是使用普罗米修斯。
    [2020-04-19 10:18:46] [error] GenericJMX plugin: Evaluating `Connection' block failed: java.lang.IllegalArgumentException: No service URL was defined.