使用dropwizard对Vertx进行运行状态的监控

普通的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运行状态

配置Jolokia连接
- Host:填写上面第3步设置的Jolokia host地址
- Port:填写上面第3步设置的Jolokia port地址

点击Connect to remote server
DashBoard
这里可以看到服务器的cpu,内存信息

点击导航栏的JMX
jmx

左侧导航栏里有个vertx节点,这里的名字是我们在第3步设置的vertx.metrics.options.jmxDomain=vertx的名字。
这个节点内的东西真是我们要监控的vertx项目的运行状态。包括eventbus信息,httpServer信息等,可以一一研究。

参考资料:http://vertx.io/docs/vertx-dropwizard-metrics/java/

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot中整合Vert.x开发MQTT应用程序,可以按照以下步骤进行操作: 1. 添加依赖:在项目的pom.xml文件中添加以下依赖,包括Vert.x和MQTT相关的依赖: ```xml <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-spring-boot-starter</artifactId> <version>2.1.6</version> </dependency> <dependency> <groupId>io.vertx</groupId> <artifactId>vertx-mqtt-server</artifactId> <version>4.2.1</version> </dependency> ``` 2. 创建MQTT服务器:在Spring Boot应用程序的入口类中,创建一个Vert.x的`Vertx`实例,并使用`Vertx`实例创建一个`MqttServer`实例。 ```java import io.vertx.core.Vertx; import io.vertx.mqtt.MqttServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } @Bean public MqttServer mqttServer(Vertx vertx) { return MqttServer.create(vertx); } } ``` 3. 编写MQTT消息处理器:创建一个实现`MqttEndpointHandler`接口的类,用于处理接收到的MQTT消息。可以根据业务需求自定义消息处理逻辑。 ```java import io.vertx.mqtt.MqttEndpoint; import io.vertx.mqtt.MqttEndpointHandler; public class MyMqttEndpointHandler implements MqttEndpointHandler { @Override public void handle(MqttEndpoint endpoint) { // 处理消息逻辑 } } ``` 4. 注册MQTT消息处理器:在Spring Boot应用程序的入口类中,将自定义的`MqttEndpointHandler`实例注册到`MqttServer`中。 ```java import io.vertx.core.Vertx; import io.vertx.mqtt.MqttServer; import io.vertx.mqtt.MqttServerOptions; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; @SpringBootApplication public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } @Bean public MqttServer mqttServer(Vertx vertx, MqttEndpointHandler endpointHandler) { MqttServerOptions options = new MqttServerOptions() .setPort(1883); // 设置MQTT服务器端口 MqttServer mqttServer = MqttServer.create(vertx, options); mqttServer.endpointHandler(endpointHandler); // 注册消息处理器 return mqttServer; } @Bean public MqttEndpointHandler endpointHandler() { return new MyMqttEndpointHandler(); } } ``` 通过以上步骤,你就可以在Spring Boot应用程序中使用Vert.x开发MQTT应用程序了。启动应用程序后,Vert.x MQTT服务器将在指定的端口上监听并处理接收到的MQTT消息。你可以根据需要在`MyMqttEndpointHandler`中编写自定义的消息处理逻辑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值