生产环境的RocketMQ集群,需要持续运行并且要有较高的稳定性,运维是件重要但有时候很繁琐的事,本节介绍运维工具的相关内容。
1.开源版本运维工具功能介绍
第1章介绍过如何启动运维页面,运维页面打开后,从左至右有7个Tab,分别是:配置、驾驶舱、集群信息、Topic信息、Consumer信息、Producer信息和消息查询,如图8-2所示。
图8-2 RocketMQ控制台
首先在配置页面,设置好NaveServer的地址。修改这个服务是否使用VIPChannel,取决于你的RocketMQ版本,如果版本小于3.5.8,请设置不使用,否则保持默认值(VIPChannel用于实现读写分离,是3.5.8以后的版本才增加的功能)。
在驾驶舱中可以查看Broker的消息量(总量/5分钟图),还可以查看单一主题的消息量(总量/趋势图)。
在集群信息页面,可以查看集群数量、地址、主从的分布情况,还可以查看Broker的运行状态信息和配置信息。
Topic页面展示所有的主题,可以通过搜索框进行过滤,筛选普通/重试/死信类型的主题;还可以添加/更新主题,修改主题的配置参数。每个参数的含义和MQAdmin命令中updateTopc命令的参数对应。还可以查看每个主题的消息投递状态,消息的路由信息(这个主题的消息会发往哪些Broker,对应Broker的Message Queue信息)。还可以向某个主题发送测试消息和重置消费位点(Offset)。
Consumer信息页面展示所有的消费组,还可以通过搜索框进行搜索,手动刷新页面或每隔五秒定时刷新页面,按照订阅组/数量/TPS/延迟进行排序,添加/更新消费组等。
Producer信息页面,可以通过Topic和Group查询在线的消息生产者信息,信息包含客户端的主机、版本等。
消息查询页面,可以根据Topic的时间、Key和消息ID进行消息查询。消息详情可以展示这条消息的详细内容。消息详情可以查看消息对应的具体消费组的消费情况(如果异常,可以查看具体的异常信息)。可以向指定的消费组重发消息。
2.基于Tools模块开发自定义运维工具
RocketMQ-Console是一个基于Spring Boot开发的运维页面工具,我们可以参考它的源码进行自定义功能的运维工具开发。
RocketMQ源码中有一个Tools模块,MQAdmin相关命令的实现就在这里,如果我们熟悉了MQAdmin命令的功能,就很容易找到实现某个功能的源码。RocketMQ的Tools模块如图8-3所示。
Tools模块源码中有一个command包,里面列出了各个组件相关的命令,如果想实现自定义的运维功能,可以直接从这里查找并参考它的源码。RocketMQ是使用Java语言开发的,比起Kafka的Scala语言和RabbitMQ的Erlang语言,更容易找到技术人员进行定制开发。大规模使用后,遇到“疑难杂症”也可以直接查看源码,找到深层次的原因。
图8-3 RocketMQ的Tools模块