第十三章:控制台与运维
深入了解 RocketMQ 的管理控制台和日常运维命令。
最后更新: 2024-01-15
页面目录
RocketMQ 控制台与运维
本章介绍 RocketMQ 的管理控制台和常用运维命令。
管理工具 mqadmin
基本命令
# 查看帮助
./mqadmin --help
# 查看具体命令帮助
./mqadmin topic --help
集群管理
# 查看集群列表
./mqadmin clusterList -n 192.168.1.101:9876
# 查看集群状态详情
./mqadmin clusterList -n 192.168.1.101:9876 -i ClusterA
Topic 管理
# 创建 Topic
./mqadmin updateTopic -n 192.168.1.101:9876 \
-t ORDER_TOPIC \
-c DefaultCluster \
-r 8 \ # 读队列数
-w 8 # 写队列数
# 删除 Topic
./mqadmin deleteTopic -n 192.168.1.101:9876 \
-t ORDER_TOPIC \
-c DefaultCluster
# 查看 Topic 路由
./mqadmin topicRoute -n 192.168.1.101:9876 -t ORDER_TOPIC
# 查看 Topic 列表
./mqadmin topicList -n 192.168.1.101:9876
# 查看 Topic 状态
./mqadmin topicStatus -n 192.168.1.101:9876 -t ORDER_TOPIC
Consumer 管理
# 查看消费者列表
./mqadmin consumerList -n 192.168.1.101:9876
# 查看消费者配置
./mqadmin consumerProgress -n 192.168.1.101:9876 -g consumer-group
# 重置消费者消费位点
./mqadmin resetOffsetByTime -n 192.168.1.101:9876 \
-g consumer-group \
-t ORDER_TOPIC \
-s 1705312800000 # 时间戳
Broker 管理
# 查看 Broker 状态
./mqadmin brokerStatus -n 192.168.1.101:9876 -b broker-a
# 查看 Broker 配置
./mqadmin getBrokerConfig -n 192.168.1.101:9876 -b broker-a
# 关闭 Broker
./mqadmin shutdownBroker -n 192.168.1.101:9876 -b broker-a
消息管理
# 按 Key 查询消息
./mqadmin queryMsgByKey -n 192.168.1.101:9876 \
-t ORDER_TOPIC \
-k order_12345
# 按消息 ID 查询
./mqadmin queryMsgById -n 192.168.1.101:9876 \
-i 0A123456789ABCDEF00001CD20000000
# 查看消息轨迹
./mqadmin queryMsgTrace -n 192.168.1.101:9876 \
-t ORDER_TOPIC \
-msgId 0A123456789ABCDEF00001CD20000000
RocketMQ Dashboard
部署 Dashboard
# Docker 部署
docker run -d \
--name rocketmq-dashboard \
-p 8080:8080 \
-e "ROCKETMQ_NAMESRV_ADDR=192.168.1.101:9876;192.168.1.102:9876" \
apacherocketmq/rocketmq-dashboard:latest
# Docker Compose 部署
version: '3.8'
services:
dashboard:
image: apacherocketmq/rocketmq-dashboard:latest
container_name: rocketmq-dashboard
ports:
- "8080:8080"
environment:
ROCKETMQ_NAMESRV_ADDR: "192.168.1.101:9876;192.168.1.102:9876"
JAVA_OPTS: "-Xmx256m -Xms256m"
restart: unless-stopped
Dashboard 功能
┌─────────────────────────────────────────────────────────────────┐
│ RocketMQ Dashboard │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ 集群概览 │ │ Topic │ │ 消费者 │ │
│ │ │ │ 管理 │ │ 管理 │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Broker │ │ 消息查询 │ │ 运维工具 │ │
│ │ 状态 │ │ │ │ │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
功能说明
| 功能 | 说明 |
|---|---|
| 集群概览 | 查看所有 Broker 状态、内存使用 |
| Topic 管理 | 创建、修改、删除 Topic |
| 消费者管理 | 查看消费进度、重置位点 |
| 消息查询 | 按 Key、ID、时间查询消息 |
| 运维工具 | 性能监控、告警配置 |
日常运维
启动和停止
# 启动 NameServer
nohup sh bin/mqnamesrv &
# 停止 NameServer
sh bin/mqshutdown namesrv
# 启动 Broker
nohup sh bin/mqbroker -n 192.168.1.101:9876 &
# 停止 Broker
sh bin/mqshutdown broker
日志管理
# 查看 NameServer 日志
tail -f logs/namesrv.log
# 查看 Broker 日志
tail -f logs/broker.log
# 日志轮转配置
# conf/logback_broker.xml
数据清理
# 手动清理过期消息
./mqadmin cleanExpiredCQ -n 192.168.1.101:9876
# 清理未使用 Topic
./mqadmin cleanUnusedTopic -n 192.168.1.101:9876
# 清理消费组
./mqadmin deleteSubGroup -n 192.168.1.101:9876 -g consumer-group
监控告警
Prometheus 集成
# prometheus.yml
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'rocketmq'
static_configs:
- targets:
- 192.168.1.101:5557
- 192.168.1.102:5557
Grafana Dashboard
{
"dashboard": {
"title": "RocketMQ Dashboard",
"panels": [
{
"title": "消息发送量",
"targets": [
{"expr": "rocketmq_producer_tps"}
]
},
{
"title": "消费延迟",
"targets": [
{"expr": "rocketmq_consumer_latency"}
]
}
]
}
}
告警规则
# alertmanager.yml
groups:
- name: rocketmq_alerts
rules:
- alert: RocketMQDown
expr: up{job="rocketmq"} == 0
for: 1m
labels:
severity: critical
annotations:
summary: "RocketMQ 服务不可用"
- alert: BrokerMemoryHigh
expr: rocketmq_broker_mem_used / rocketmq_broker_mem_total > 0.8
for: 5m
labels:
severity: warning
性能监控
关键指标
| 指标 | 说明 | 阈值 |
|---|---|---|
| 发送 TPS | 每秒发送消息数 | > 10000 |
| 消费 TPS | 每秒消费消息数 | > 8000 |
| 发送延迟 | 消息发送耗时 | < 10ms |
| 消费延迟 | 消息堆积数量 | < 1000 |
| 内存使用 | Broker 内存使用 | < 80% |
查看统计
# 查看 Broker 统计
./mqadmin brokerStats -n 192.168.1.101:9876 -b broker-a
# 查看 Topic 发送统计
./mqadmin statsAll -n 192.168.1.101:9876 -t ORDER_TOPIC
# 查看消费统计
./mqadmin consumerProgress -n 192.168.1.101:9876 -g consumer-group
故障排查
常见问题
# 1. 消息发送失败
# 检查 Broker 状态
./mqadmin clusterList -n 192.168.1.101:9876
# 检查网络连通性
telnet 192.168.1.101 10911
# 2. 消息消费堆积
# 查看消费进度
./mqadmin consumerProgress -n 192.168.1.101:9876 -g consumer-group
# 查看 Topic 延迟
./mqadmin topicStatus -n 192.168.1.101:9876 -t ORDER_TOPIC
# 3. 消费者无法连接
# 检查 NameServer
./mqadmin topicRoute -n 192.168.1.101:9876 -t ORDER_TOPIC
日志分析
# 查看错误日志
grep -i error logs/broker.log | tail -100
# 查看发送失败日志
grep -i "send failed" logs/broker.log
# 查看消费异常日志
grep -i "consume failed" logs/broker.log
备份与恢复
配置备份
#!/bin/bash
# backup-config.sh
BACKUP_DIR="/backup/rocketmq"
DATE=$(date +%Y%m%d)
mkdir -p ${BACKUP_DIR}
# 备份配置文件
cp -r /rocketmq/conf ${BACKUP_DIR}/conf_${DATE}
# 备份 Broker 配置
./mqadmin getBrokerConfig -n 192.168.1.101:9876 > ${BACKUP_DIR}/broker_config_${DATE}.txt
# 备份 Topic 配置
./mqadmin topicList -n 192.168.1.101:9876 > ${BACKUP_DIR}/topics_${DATE}.txt
数据恢复
# 恢复 Topic 配置
./mqadmin updateTopic -n 192.168.1.101:9876 \
-t ORDER_TOPIC \
-c DefaultCluster \
-r 8 -w 8
下一步
接下来让我们学习性能优化。
👉 性能优化