【问题标题】:Accessing internal MBean JMX Attributes with Spring Actuator使用 Spring Actuator 访问内部 MBean JMX 属性
【发布时间】:2016-05-16 19:30:40
【问题描述】:

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

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

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

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

我尝试检查 jolokia,但我无法从文档中了解该框架是否能满足我的需求。

谢谢!

【问题讨论】:

    标签: jmx spring-boot-actuator jolokia


    【解决方案1】:

    请使用以下代码在 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>
    

    【讨论】:

    • 谢谢,我会试试这个。除了这 3 个之外,我可以公开的所有各种属性类是否有任何文档?
    • 找不到太多文档,但我在实现时已经探索过一次。它们是 BufferPoolMetricSet、CachedThreadStatesGaugeSet、ClassLoadingGaugeSet、GarbageCollectorMetricSet、MemoryUsageGaugeSet、ThreadStatesGaugeSet。
    猜你喜欢
    • 2018-10-15
    • 2014-04-06
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 2021-05-30
    相关资源
    最近更新 更多