0

我正在通过其 JMX 接口使用 Spring Actuator 向我们的监控团队提供指标。

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

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

Spring 的 JMX 解决方案在默认情况下对许多生产监控工具来说并不友好。

我试图检查 jolokia,但我无法从文档中理解这个框架是否能满足我的需要。

谢谢!

4

1 回答 1

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>
于 2016-06-02T18:40:04.813 回答