首页 > 解决方案 > 需要更改通过 JMX 公开的指标的名称

问题描述

我的 JMX 导出器类:

private static final String HEALTHDOMAIN = "com.xyz.abc:ContainerName=healthcheck";   
    private final MBeanExporter exporter; 

    public void registerHelathMbean(Object healthMbean, String entity) {
                try {
                    this.exporter.registerManagedResource(healthMbean, new ObjectName(String.format("%s,entity=%s", HEALTHDOMAIN, entity)));
                }
            } 

我的公制类:

import org.springframework.boot.actuate.health.Status;
import org.springframework.jmx.export.annotation.ManagedAttribute;
import org.springframework.jmx.export.annotation.ManagedResource;

@ManagedResource()
public class MongoHealthMetric extends SimpleGauge {

    public MongoHealthMetric(double value) {
        super(value);
    }

    public void setValue(Status status) {
        super.setValue(status.equals(Status.UP) ? 0.0 : 1.0);
    }

    @Override
    @ManagedAttribute
    public Double getValue() {
        return super.getValue();
    }
}

当我最终通过 Java 代理通过 JMX 导出指标时-

我得到的指标名称:com_xyz_abc_healthcheck_Value{entity="mongo"} 0.0

我想要的指标名称:healthcheck{entity="mongo"} 0.0

我已尝试多次调整 HEALTHDOMAIN,但找不到正确的域来获取上述指标名称。

标签: javajmxspring-boot-actuatorhealth-monitoringmbeans

解决方案


推荐阅读