我有一个 Spring Boot 项目,我在其中使用 spring-boot-starter-actuator 和 io.dropwizard.metrics。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
</dependency>
它生成我可以通过 url http://myapplication/metrics访问的指标。我将应用程序部署在 Wildfly 10 独立服务器上。
我想使用 jmx 来读取 jconsole 上的指标。我将应用程序配置为使用 JMXReporter 发送指标:
@Configuration
@EnableMetrics
public class MetricsConfiguration extends MetricsConfigurerAdapter {
@Override
public void configureReporters(MetricRegistry metricRegistry) {
registerReporter(JmxReporter.forRegistry(metricRegistry)
.build())
.start();
}
}
当我启动服务器并部署应用程序时,日志说:
osbaejEndpointMBeanExporter 位于托管 bean 'metricsEndpoint':向 JMX 服务器注册为 MBean [portal-ws-jmx:type=Endpoint,name=metricsEndpoint]
当我运行 jconsole 时,在本地进程列表中,只有 JConsole 进程和一些灰色的 PID。如果我选择灰色 PID,它会显示“管理代理未在此进程上启用”。
我还尝试使用远程进程连接:
- 服务:jmx:http-remoting-jmx://localhost:9990
- 服务:jmx:remote+ http://localhost:9990
- 本地主机:9990
但这不起作用。
我试图设置 jvm 变量:
- -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false
和财产:
- spring.jmx.enabled=true
它也不起作用。
我可以用 jconsole 读取 jmx 指标吗?