第十三章:控制台与运维

深入了解 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

下一步

接下来让我们学习性能优化。

👉 性能优化