RocketMQ Dashboard 的安装及使用

摘要

  • 本文介绍 CentOS9 中 RocketMQ Dashboard 的安装与使用。

  • RocketMQ官网

  • 本文使用的 RocketMQ 版本为 5.3.2。

RocketMQ Dashboard 简介

  • 官方文档

  • RocketMQ Dashboard 是 RocketMQ 的管控利器,为用户提供客户端和应用程序的各种事件、性能的统计信息,支持以可视化工具代替 Topic 配置、Broker 管理等命令行操作。

  • 功能概览

面板 功能说明
运维 修改 NameServer 地址;选择 VIPChannel 等运维配置。
驾驶舱 查看 Broker、Topic 消息量 等运行总览信息。
集群 查看 集群分布、Broker 配置、运行状态及详细信息。
主题(Topic) 搜索、筛选、删除、更新/新增主题;查看 消息路由;执行 发送消息重置消费位点 等操作。
消费者(Consumer) 搜索、删除、新增/更新消费者组;查看 终端信息、消费详情、配置项
消息(Message) 查看 消息记录、死信消息、消息轨迹 等消息级详情。
  • 系统要求 与 网络配置

类别 项目 说明
系统要求 操作系统 Linux / Unix / macOS
JDK 64 位 JDK, 1.x 版本需要1.8+,2.x版本需要 17+
构建工具 Maven 3.2.x 或更高版本
启动项 启动 RocketMQ(包括 NameServer 与 Broker)
网络配置 网络访问 云服务器需可远程访问,或本地虚拟机需可 PING 通外网

RocketMQ Dashboard 的安装

  • 部署 RocketMQ Dashboard 2.x,需要安装 JDK17

  • 源码安装,源码下载

1
2
3
4
5
6
# 下载源码
cd /usr/local/soft/rocketmq
wget https://github.com/apache/rocketmq-dashboard/archive/refs/tags/rocketmq-dashboard-2.1.0.tar.gz
tar -zxvf rocketmq-dashboard-2.1.0.tar.gz
ln -s rocketmq-dashboard-rocketmq-dashboard-2.1.0 rocketmq-dashboard
cd rocketmq-dashboard
  • bug 修复,当前2.1.0版本存在bug,只能通过http://localhost:8082访问,如果需要ip或域名访问,则需要修改源码

1
2
3
4
5
6
7
8
9
10
11
cd frontend-new/src/api/remoteApi
sed -i 's|apiBaseUrl: '\''http://localhost:8082'\''|apiBaseUrl: process.env.REACT_APP_API_BASE_URL \|\| window.location.origin|' remoteApi.js.bck

# 替换前:
const appConfig = {
apiBaseUrl: 'http://localhost:8082'
};
# 替换后:
const appConfig = {
apiBaseUrl: process.env.REACT_APP_API_BASE_URL || window.location.origin
};
环境 环境变量值 结果 (appConfig.apiBaseUrl)
开发环境 REACT_APP_API_BASE_URL=http://localhost:8080 http://localhost:8080
测试环境 REACT_APP_API_BASE_URL=https://api.test.example.com https://api.test.example.com
未设置变量 (无该环境变量) 则使用默认的 window.location.origin,其表示 当前网页的 协议 + 域名 + 端口号 自动使用当前网站地址,如 https://myapp.example.com

目前2.1.0版本的bug还比较多,GitHub仓库中的代码已经修复了包括该bug在内的部分bug,不过还没有发布到 release。
着急的小伙伴可以通过 git clone 项目,编译并运行,或者等待作者发布新版本。

1
git clone https://github.com/apache/rocketmq-dashboard.git
  • 编译

1
2
3
4
5
6
cd /usr/local/soft/rocketmq/rocketmq-dashboard
# 编译
JAVA_HOME=/usr/local/jdk/jdk17 mvn clean package -Dmaven.test.skip=true
# 将jar包复制到run目录下,以避免重新编译时被覆盖
mkdir run
cp target/rocketmq-dashboard-2.1.0.jar run/
  • 按需替换配置,

1
2
3
4
5
6
7
8
9
10
11
12
13
# vim run/application.yaml # 按需替换配置

rocketmq:
config:
namesrvAddrs: # 填写NameServer地址列表
- 10.250.0.175:9876
- 10.250.0.188:9876
- 10.250.0.131:9876
dataPath: /usr/local/soft/rocketmq/data/dashboard # Dashboard文件目录,登录用户配置文件所在目录
loginRequired: true # 是否需要登录,此时需要在 dataPath 下创建 users.properties 文件,用于存放用户名和密码。如果该目录下不存在此文件,则默认使用resources/users.properties文件
# 如果 broker 开启了 ACL,则需要配置 accessKey 和 secretKey
# accessKey: mqadmin
# secretKey: 1234567
  • users.properties 文件格式如下:

1
2
3
4
5
6
7
# 该文件支持热修改,即添加和修改用户时,不需要重新启动console
# 格式, 每行定义一个用户, username=password[,N] #N是可选项,可以为0 (普通用户); 1 (管理员)
# 定义管理员,管理员拥有全部权限
super=passwd,1
# 定义普通用户,普通用户的权限需要在 dataPath 下的 role-permission.yml 文件中定义,如果该目录下不存在此文件,则默认使用resources/role-permission.yml文件
user1=passwd
user2=passwd
  • role-permission.yml 文件格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 该文件支持热修改,即添加和修改用户时,不需要重新启动console
# 格式,如果增加和删除接口权限,直接在列表中增加和删除接口地址即可。
# 接口路径配置支持通配符
# * 表示匹配0或多个不是/的字符
# ** 表示匹配0或多个任意字符
# ? 表示匹配1个任意字符

rolePerms:
# 普通用户,以下权限为默认权限,基本上就只是查询的权限
Normal:
- /rocketmq/nsaddr
- /ops/*
- /dashboard/**
- /topic/*.query
- /topic/sendTopicMessage.do
- /producer/*.query
- /message/*
- /messageTrace/*
- /monitor/*
....
  • 启动

1
2
3
4
5
6
cd run
# 启动,默认会加载与jar包同级目录下的application.yaml文件
nohup /usr/local/jdk/jdk17/bin/java -jar rocketmq-dashboard-2.1.0.jar 1>dashboard.log 2>&1 &

# 查看日志
tail -f dashboard.log