普通的java程序可以通过javamelody之类的监控工具来监控程序运行状态,基于vertx搭建的项目需要用vertx专用的监控工具来监控运行状态。
官网中提供了一种通过Dropwizard来监控的方法,由于官网的介绍太过于简介,下面一步步的介绍一下使用流程。
1,在vertx项目的pom文件中加入Dropwizard的引用
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-dropwizard-metrics</artifactId>
<version>3.3.3</version>
</dependency>
2,下载Jolokia,Jolokia用来获取vertx的状态
下载地址:jolokia-jvm-1.3.5-agent.jar
下载后,上传到服务器或者本地的随意目录
3,运行vertx项目,并启用Jolokia监控
java -javaagent:/opt/vertx/jolokia-jvm-1.3.5-agent.jar=port=9999,host=219.219.219.219 -jar /opt/vertx/vertxproject.jar -Dvertx.metrics.options.enabled=true -Dvertx.metrics.options.jmxEnabled=true -Dvertx.metrics.options.jmxDomain=vertx
- /opt/vertx/jolokia-jvm-1.3.5-agent.jar:jolokia-jvm-1.3.5-agent.jar的绝对路径,如果在本地测试,也可以是本地的绝对路径
- port=9999:jolokia的端口号
- host=219.219.219.219:jolokia的host,因为服务器一般都需要远程监控,所以最好填写外网地址,本地测试的话,填写localhost即可
- /opt/vertx/vertxproject.jar:vertx项目的绝对路径,如果在本地测试的话,也可以是本地的绝对路径
- -Dvertx.metrics.options.enabled=true:vertx监控底层是通过metrics实现的,所以需要开启metrics
- -Dvertx.metrics.options.jmxEnabled=true:jmx是vertx监控的主要内容,所以需要开启jmx
- -Dvertx.metrics.options.jmxDomain=vertx:jmx的名称,这里设置为vertx,可以随便定义
运行结果里面会有下面的输出:
I> No access restrictor found, access to any MBean is allowed
Jolokia: Agent started with URL http://219.219.219.219:9999/jolokia
..............
..............
..............
4,下载Hawtio,Hawtio可以远程连接Jolokia,以图形界面的形式监控vertx运行状态
有两种方式启动Hawtio,一种是以jar包的形式运行,一种是以war包的形式运行。
1,jar包形式运行:
下载地址:hawtio-app-1.4.66.jar
运行命令:java -jar hawtio-app-1.4.66.jar –port 8080
端口号可以随意设置
2,war包形式运行:
下载地址:hawtio-default-1.4.66.war
将下载的hawtio-default-1.4.66.war重命名为hawtio.war,放入tomcat的webapps目录,重新启动tomcat即可通过http://localhost:8080/hawtio/ 来访问
5, Hawtio配置Jolokia连接,监控vertx运行状态
- Host:填写上面第3步设置的Jolokia host地址
- Port:填写上面第3步设置的Jolokia port地址
点击Connect to remote server
这里可以看到服务器的cpu,内存信息
点击导航栏的JMX
左侧导航栏里有个vertx节点,这里的名字是我们在第3步设置的vertx.metrics.options.jmxDomain=vertx的名字。
这个节点内的东西真是我们要监控的vertx项目的运行状态。包括eventbus信息,httpServer信息等,可以一一研究。