使用Spring Actuator访问内部MBean JMX属性

时间:2016-05-16 19:30:40

标签: jmx spring-boot-actuator jolokia

我通过其JMX界面使用Spring Actuator为我们的监控团队提供指标。

我们的监控团队正在使用可以跟踪特定MBean属性的工具。使用“标准”JMX,就像Tomcat公开的JMX一样,这很好用。但是,在Spring Actuator中,暴露的MBean只是SENSITIVE,ENDPOINT和DATA。 DATA包含一个json,里面包含所有属性(类似于你在http界面中看到的)。

有没有办法将特定信息(例如,mem usage,threads.active等)公开为自己的MBean属性,而不是将所有属性显示为大JSON?

Spring的JMX解决方案对于许多生产监控工具来说都不是用户友好的默认设置。

我试图检查jolokia但是我无法从文档中理解这个框架是否会提供我需要的东西。

谢谢!

1 个答案:

答案 0 :(得分:0)

请使用以下代码查看jconsole上MBEAN选项卡中的METRIX节点,其中显示有关JVM内存,线程和放大器的完整详细信息。 GC声明。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.codahale.metrics.JmxReporter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.jvm.GarbageCollectorMetricSet;
import com.codahale.metrics.jvm.MemoryUsageGaugeSet;
import com.codahale.metrics.jvm.ThreadStatesGaugeSet;

@Configuration
public class Metrix {

    @Bean
    public JmxReporter jmxReporter() {
        JmxReporter reporter = JmxReporter.forRegistry(getMetricRegistry()).build();
        reporter.start();
        return reporter;
    }

    public MetricRegistry getMetricRegistry() {
        MetricRegistry metricRegistry = new MetricRegistry();
        metricRegistry.register("jvm-thread-state", new ThreadStatesGaugeSet());
        metricRegistry.register("jvm-mem", new MemoryUsageGaugeSet());
        metricRegistry.register("jvm-gc", new GarbageCollectorMetricSet());
        return metricRegistry;
    }
}

Use following libraries:-
<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
</dependency>
<dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>3.1.2</version>
</dependency>
<dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-jvm</artifactId>
    <version>3.1.2</version>
</dependency>