我有一个Spring启动项目,我使用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>
它会生成我可以使用网址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();
}
}
当我启动服务器并部署应用程序时,日志会说:
o.s.b.a.e.j.EndpointMBeanExporter位于托管bean 'metricsEndpoint':将JMX服务器注册为MBean [门户-WS-JMX:类型=端点,名称= metricsEndpoint]
当我运行jconsole时,在Local Process列表中,只有JConsole进程和一些灰色PID。如果我选择灰色PID,则会显示“此进程未启用管理代理”。
我还尝试使用远程进程连接:
但这不起作用。
我尝试设置jvm变量:
和财产:
它也不起作用。
我可以用jconsole读取jmx指标吗?
答案 0 :(得分:1)
我在这里找到了一个解决方案: https://github.com/jberlana/JBWhatsAppActivity
我的问题来自Wildfly。 当我运行jconsole时,我需要jboss-cli-client.jar和tools.jar到jconsole类路径:
$JAVA_HOME/bin/jconsole -J-Djava.class.path=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/jconsole.jar:/opt/wildfly-8.2.0.Final/bin/client/jboss-cli-client.jar
现在它有效,我可以使用&#34; service:jmx:remote + https://dzone.com/articles/remote-jmx-access-wildfly-or&#34;连接到jmx。
答案 1 :(得分:0)
这是我用来生成一个工作的spring-boot应用程序的命令行参数的集合(虽然使用Tomcat,而不是Wildfly),它通过JConsole公开事物:
cmd="$cmd -Dcom.sun.management.jmxremote"
cmd="$cmd -Dcom.sun.management.jmxremote.port=9899"
cmd="$cmd -Dcom.sun.management.jmxremote.rmi.port=9811"
cmd="$cmd -Dcom.sun.management.jmxremote.authenticate=false"
cmd="$cmd -Dcom.sun.management.jmxremote.ssl=false"
cmd="${cmd} -Djava.rmi.server.hostname=<IP_OF_YOUR_SERVER>"
请注意,应用程序运行并通过端口9800(在我的情况下)访问。但是,端口9811和9899也可用于处理JMX(如上所述)。您还需要确保可以通过您可能已设置的任何防火墙访问这3个端口。
祝你好运