本篇整理在运维 RocketMQ 集群时的常用命令,明白命令的含义,在集群运维时得心应手,下面命令均在实际环境中执行过。
命令 clusterList 用于查看集群各个节点的运行情况。可以看到该集群中有几个节点、主节点还是从节点、以及每个节点的写入 TPS 和读出的 TPS 等。
命令示例:
1 | $ bin/mqadmin clusterList -n x.x.x.x:9876 |
字段含义
名称 | 含义 |
---|---|
-n | Nameserver 地址 |
Cluster Name | 集群名称 |
Broker Name | 节点 Broker 名称 |
BID | Broker ID (0 为主节点,从节点非 0 表示) |
Addr | 节点地址(ip:port) |
Version | RocketMQ 的版本号 |
InTPS | 节点每秒写入的消息数量 |
OutTPS | 节点每秒读出的消息数量 |
PCWait | pageCacheLockTimeMills(消息落盘会加锁,当前时间与最后一次加锁的差值) |
Hour | 磁盘存储多久的有效消息(当前时间与磁盘存储最早的一条消息时间戳的差值) |
SPACE | 磁盘已使用的占比 |
命令 statsAll 可以查看集群中所有主题/消费组的实时吞吐情况。
命令示例
1 | $ bin/mqadmin statsAll -n x.x.x.x:9876 |
字段含义
名称 | 含义 |
---|---|
-n | Nameserver 地址 |
-a | 只打印活动的主题 |
-t | 只打印指定的主题 |
Topic | 主题名称 |
Consumer Group | 消费组名称 |
Accumulation | 消息堆积数量 |
InTPS | 该主题每秒写入的消息数量 |
OutTPS | 该消费组每秒消费的消息数量 |
InMsg24Hour | 该主题 24 小时写入的消息总数 |
OutMsg24Hour | 该消费组 24 小时消费的消息总数 |
通过 topicList 列出集群中的所有主题。
命令示例:
1 | $ bin/mqadmin topicList -n x.x.x.x:9876 |
字段含义:
名称 | 含义 |
---|---|
-n | Nameserver 地址 |
使用 updateTopic 创建主题,也可以用该命令修改主题配置,例如:队列数量、权限等。
命令示例:
1 | $ bin/mqadmin updateTopic -n x.x.x.x:9876 -c fat_mq -t mq_demo_topic |
字段含义:
名称 | 含义 |
---|---|
-n | Nameserver 地址 |
-c | 集群名称 |
-t | 要创建的 Topic 名称 |
topicName | 主题名称 |
readQueueNums | 读队列数量 |
writeQueueNums | 写队列数量 |
perm | 主题权限 RW 表示该主题拥有读写权限 |
topicFilterType | 消息过滤类型 |
topicSysFlag | 主题系统标记 |
order | 是否有序主题 |
使用 topicRoute 命令可以查看 Topic 的路由信息,队列所在的 Broker 以及 Broker 所在的集群等。
命令示例:
1 | $ bin/mqadmin topicRoute -n x.x.x.x:9876 -t mq_demo_topic |
字段含义:
名称 | 含义 |
---|---|
-n | Nameserver 地址 |
-t | 主题名称 |
brokerDatas | broker 信息地址、节点名称、所在集群 |
queueDatas | 队列数量、队列所在的 broker、权限等 |
使用 topicStatus 查看主题状态情况,例如:最小偏移量、最大偏移量、最新更新时间等。
命令示例:
1 | $ bin/mqadmin topicStatus -n x.x.x.x:9876 -t mq_demo_topic |
字段含义:
名称 | 含义 |
---|---|
-n | NameServer 地址 |
-t | 主题名称 |
Broker Name | 节点名称 |
QID | Queue ID 队列编号 |
Min Offset | 该队列最小偏移量 |
Max Offset | 该队列最大偏移量 |
Last Updated | 最新写入消息的时间戳 |
可以通过 updateTopicPerm 修改主题的权限,有三种类型:写权限用 2 表示、读权限用 4 表示、读写权限用 6 表示。下面示例中将主题从读写权限变更为写权限。
命令示例:
1 | $ bin/mqadmin updateTopicPerm -c fat_mq -t mq_demo_topic -p 2 -n x.x.x.x:9876 |
字段含义:
名称 | 含义 |
---|---|
-c | 集群名称 |
-t | 主题名称 |
-p | 权限(2:W,4:R,6:WR) |
-n | NameServer 地址 |
通过 deleteTopic 删除主题,可以通过该命令对废弃主题进行删除。
命令示例:
1 | $ bin/mqadmin deleteTopic -n x.x.x.x:9876 -t mq_demo_topic -c fat_mq |
字段含义:
名称 | 含义 |
---|---|
-n | Nameserver 地址 |
-t | 主题名称 |
-c | 集群名称 |
通过 updateSubGroup 可以创建消费组,创建成功会返回该消费组的配置信息。
命令示例:
1 | $ bin/mqadmin updateSubGroup -n x.x.x.x:9876 -c fat_mq -g mq_demo_consumer |
字段含义:
名称 | 含义 |
---|---|
-n | Nameserver 地址 |
-c | 集群名称 |
-g | 消费组名称 |
groupName | 消费组名称 |
consumeEnable | 是否开启消费,默认开启 |
consumeFromMinEnable | 是否从最小位点消费,默认 false |
consumeBroadcastEnable | 是否开启广播消费,默认 false |
retryQueueNums | 重试队列数量,默认为 1 |
retryMaxTimes | 消费重试次数,默认 16 次 |
brokerId | 消费组所在的 brokerId |
whichBrokerWhenConsumeSlowly | 当 Master 节点消费慢时,默认在从节点 ID 为 1 的 broker 消费 |
通过 consumerStatus 可以查看各个消费者的情况,包括版本、消费组名称等。
命令示例:
1 | $ bin/mqadmin consumerStatus -g mq_demo_consumer -n x.x.x.x:9876 |
字段含义:
名称 | 含义 |
---|---|
-g | 消费组名称 |
-n | NameServer 地址 |
输出第一列 | 第几个消费者 |
输出第二列 | clientId |
输出第三列 | 该消费者使用的客户端 RocketMQ 版本 |
输出第四列 | 文件路径(filePath),该文件记录了消费者详细信息 |
通过 consumerProgress 查看该消费组在订阅主题中每个 Queue 消息的消费进度。
命令示例:
1 | $ bin/mqadmin consumerProgress -g pglog_rmq_t_biz_extend_synchbase_consumer -n x.x.x.x:9876 |
字段含义:
名称 | 含义 |
---|---|
-g | 消费组名称 |
-n | NameServer 地址 |
Topic | 订阅的主题 |
Broker Name | 订阅主题所在的 Broker |
QID | 订阅主题的 Queue ID |
Broker Offset | 该 Queue 存储的消息偏移量 |
Consumer Offset | 该 Queue 消费的消息偏移量 |
Diff | 消息堆积情况 |
LastTime | 上次消费消息的时间 |
Consume TPS | 每秒钟消费消息的数量 |
Diff Total | 消息堆积总数 |
通过 resetOffsetByTime 可以将消费组重新定位到过去某个时间点重新开始消费。
命令示例:
1 | $ bin/mqadmin resetOffsetByTime -n x.x.x.x:9876 -g melon_consumer_0010 -t melon_test_0010 -s now |
字段含义:
名称 | 含义 |
---|---|
-n | NameServer 地址 |
-g | 消费组名称 |
-t | 消费组定于的主题名称 |
-s | 回溯的时间戳(例如:1595815028792,now 表示当前时间) |
brokerName | 节点名称 |
queueId | 队列 ID |
offset | 回溯后该队列消费的偏移量 |
通过 brokerStatus 命令了解集群中某个 Broker 的运行情况,例如:启动时间、版本、吞吐情况等。
命令示例:
1 | $ bin/mqadmin brokerStatus -b x.x.x.x:10911 -n x.x.x.x:9876 |
字段含义:
名称 | 含义 |
---|---|
-b | Broker 的 IP 地址 |
-n | Nameserver 地址 |
EndTransactionQueueSize | END_TRANSACTION 的线程池请求数 |
EndTransactionThreadPoolQueueCapacity | END_TRANSACTION 线程池大小,默认 100000 |
bootTimestamp | Broker 启动时间 |
brokerVersion | Broker 版本 |
brokerVersionDesc | Broker 版本描述 |
commitLogDirCapacity | commitLog 目录磁盘使用情况 |
commitLogDiskRatio | commitLog 目录磁盘使用百分比 |
commitLogMaxOffset | commitLog 最大偏移量 |
commitLogMinOffset | commitLog 最小偏移量 |
dispatchBehindBytes | 已在 commit log 中存储未转发到 consume queue 的数据(单位字节) |
dispatchMaxBuffer | 可忽略未被使用 |
earliestMessageTimeStamp | 存储最早消息的时间戳 |
getFoundTps | 拉取时被找到的消息 Tps 统计,分别表示前 10s、1 分钟、10 分钟平均 Tps |
getMessageEntireTimeMax | 查找单条消息的最大耗时 |
getMissTps | 拉取时未被找到的消息 Tps 统计,分别表示前 10s、1 分钟、10 分钟平均 Tps |
getTotalTps | 拉取时总的消息 Tps 统计,分别表示前 10s、1 分钟、10 分钟平均 Tps |
getTransferedTps | 向拉取方传输消息 Tps 统计,分别表示前 10s、1 分钟、10 分钟平均 Tps |
msgGetTotalTodayMorning | 截止今天凌晨 12 点从该 broker 拉取的消息总数 |
msgGetTotalTodayNow | 截止当前时间从该 broker 拉取的消息总数 |
msgGetTotalYesterdayMorning | 截止昨天凌晨 12 点从该 broker 拉取的消息总数 |
msgPutTotalTodayMorning | 截止今天凌晨 12 点从该 broker 写入的消息总数 |
msgPutTotalTodayNow | 截止当前时间从该 broker 写入的消息总数 |
msgPutTotalYesterdayMorning | 截止昨天凌晨 12 点从该 broker 写入的消息总数 |
pageCacheLockTimeMills | 消息存储时会加锁,指从加锁现在的时间 |
pullThreadPoolQueueCapacity | 拉取线程池队列初始容量,默认为 100000 |
pullThreadPoolQueueHeadWaitTimeMills | 队列头部第一个任务从创建到现在一直未被执行的时间,即:队列第一个任务等待时间 |
pullThreadPoolQueueSize | 拉取线程池队列当前任务数量 |
putMessageAverageSize | 写入消息的平均大小 |
putMessageDistributeTime | 消息存储的耗时分布情况。例如:[<=0ms]:11 指存储时小于等于 0ms 的有 11 条消息 |
putMessageEntireTimeMax | 消息存储的最大耗时 |
putMessageSizeTotal | 存储消息的总大小 |
putMessageTimesTotal | 存储消息的总条数 |
putTps | 统计 10 秒、1 分钟、10 分钟写入平均 Tps |
queryThreadPoolQueueCapacity | 查询线程池队列初始容量,默认为 20000 |
queryThreadPoolQueueHeadWaitTimeMills | 队列头部第一个任务从创建到现在一直未被执行的时间,即:队列第一个任务等待时间 |
queryThreadPoolQueueSize | 查询线程池队列当前任务数量 |
remainHowManyDataToCommit | 剩余多少数据未被写入到 fileChannel |
remainHowManyDataToFlush | 剩余多少数据未被刷到磁盘 |
remainTransientStoreBufferNumbs | 堆外可用缓存区数量,初始大小为 5,每个大小 1G,为在开启队外内存传输时有效 |
runtime | 该 broker 运行了多久了 |
scheduleMessageOffset_1 | SCHEDULE_TOPIC_XXXX 第 1 个 Queue 的最大偏移量 (注:延迟消息存储在名字为 SCHEDULE_TOPIC_XXXX 的 topic 中) |
scheduleMessageOffset_10 | SCHEDULE_TOPIC_XXXX 第 10 个 Queue 的最大偏移量 |
scheduleMessageOffset_11 | SCHEDULE_TOPIC_XXXX 第 11 个 Queue 的最大偏移量 |
scheduleMessageOffset_12 | SCHEDULE_TOPIC_XXXX 第 12 个 Queue 的最大偏移量 |
scheduleMessageOffset_13 | SCHEDULE_TOPIC_XXXX 第 13 个 Queue 的最大偏移量 |
scheduleMessageOffset_14 | SCHEDULE_TOPIC_XXXX 第 14 个 Queue 的最大偏移量 |
scheduleMessageOffset_15 | SCHEDULE_TOPIC_XXXX 第 15 个 Queue 的最大偏移量 |
scheduleMessageOffset_16 | SCHEDULE_TOPIC_XXXX 第 16 个 Queue 的最大偏移量 |
scheduleMessageOffset_17 | SCHEDULE_TOPIC_XXXX 第 17 个 Queue 的最大偏移量 |
scheduleMessageOffset_18 | SCHEDULE_TOPIC_XXXX 第 18 个 Queue 的最大偏移量 |
scheduleMessageOffset_2 | SCHEDULE_TOPIC_XXXX 第 2 个 Queue 的最大偏移量 |
scheduleMessageOffset_3 | SCHEDULE_TOPIC_XXXX 第 3 个 Queue 的最大偏移量 |
scheduleMessageOffset_4 | SCHEDULE_TOPIC_XXXX 第 4 个 Queue 的最大偏移量 |
scheduleMessageOffset_5 | SCHEDULE_TOPIC_XXXX 第 5 个 Queue 的最大偏移量 |
scheduleMessageOffset_6 | SCHEDULE_TOPIC_XXXX 第 6 个 Queue 的最大偏移量 |
scheduleMessageOffset_7 | SCHEDULE_TOPIC_XXXX 第 7 个 Queue 的最大偏移量 |
scheduleMessageOffset_8 | SCHEDULE_TOPIC_XXXX 第 8 个 Queue 的最大偏移量 |
scheduleMessageOffset_9 | SCHEDULE_TOPIC_XXXX 第 9 个 Queue 的最大偏移量 |
sendThreadPoolQueueCapacity | 发送线程池队列初始容量,默认为 10000 |
sendThreadPoolQueueHeadWaitTimeMills | 队列头部第一个任务从创建到现在一直未被执行的时间,即:队列第一个任务等待时间 |
sendThreadPoolQueueSize | 发送线程池队列当前任务数量 |
startAcceptSendRequestTimeStamp | 可以配置在指定的时间 broker 接受客户端发送请求,默认启动后则接受发送请求 |
通过 getBrokerConfig 获取 Broker 的配置信息,下面指提供获取命令,具体参数的含义会在另篇中解读。
命令示例:
1 | $ bin/mqadmin getBrokerConfig -b x.x.x.x:10911 -n x.x.x.x:9876 |
我们可以通过 updateBrokerConfig 命令对 Broker 配置进行热更新,更新后实时生效,不需要重启 Broker 节点。
命令示例:
1 | $ bin/mqadmin updateBrokerConfig -b x.x.x.x:10911 -n dev-mq1.ttbike.com.cn:9876 -k slaveReadEnable -v true |
字段含义:
名称 | 含义 |
---|---|
-b | Broker 地址 |
-n | NameServer 地址 |
-k | 需更新的配置的 key |
-v | 需更新配置 key 对应的值 |
可以使用 sendMsgStatus 命令对某个 Broker 发送测试消息,检测该 Broker 运行情况。
命令示例:
1 | bin/mqadmin sendMsgStatus -b dev_mq_d -n x.x.x.x:9876 |
字段含义:
名称 | 含义 |
---|---|
-b | Broker 名称 |
-n | NameServer 地址 |
-c | 指定发送消息数量,默认 50 条 |
-s | 指定发送消息体大小,默认 128k |
通过命令 printMsg 可以打印主题中的消息。
命令示例:
1 | $ bin/mqadmin printMsg -d true -n x.x.x.x:9876 -t melon_dev_test |
字段含义:
名称 | 含义 |
---|---|
-d | 是否打印消息体,默认 false |
-n | NameServer 地址 |
-t | 主题名称 |
-b | 开始时间戳,格式为 currentTimeMillis|yyyy-MM-dd#HH:mm:ss:SSS |
-c | 字符编码,默认 UTF-8 |
-e | 结束时间戳,格式为 currentTimeMillis|yyyy-MM-dd#HH:mm:ss:SSS |
-s | 订阅的 tag,默认为全部(*),格式 TagA |
通过 queryMsgById 命令检索存储在集群中的消息。
命令示例:
1 | $ bin/mqadmin queryMsgById -n x.x.x.x:9876 -i 0A6F4B5F00002A9F000000138873E059 |
字段含义:
名称 | 含义 |
---|---|
-n | NameServer 地址 |
-i | 消息 ID |
OffsetID | |
Topic | 主题名称 |
Tags | 消息的 TAG |
Keys | 发送消息的 key |
Queue ID | 消息存储的 Queue |
Queue Offset | 消息在 Queue 中的偏移量 |
CommitLog Offset | 消息在 commitLog 文件中的偏移量 |
Reconsume Times | 重新消费的次数 |
Born Timestamp | 消息诞生的时间戳 |
Store Timestamp | 消息存储的时间戳 |
Born Host | 发送消息的 IP 地址 |
Store Host | 消息存储的 IP 地址 |
System Flag | 标志信息 |
Properties | 属性信息 |
Message Body Path | 消息体存储路径 |
MessageTrack | 消费情况 |
可以通过 queryMsgByKey 命令根据消息 Key 检索消息。
命令示例:
1 | $ bin/mqadmin queryMsgByKey -n x.x.x.x:9876 -t melon_dev_test -k orderNo1 |
字段含义:
名称 | 含义 |
---|---|
-n | NameServer 地址 |
-t | 主题名称 |
-k | 消息 key |
Message ID | 消息 ID |
QID | 消息存储的 Queue |
Offset | 消息在 Queue 的偏移量 |
消息存储在 Broker 中的 queue 中,同样可以通过 offset 来检索消息。
命令示例:
1 | $ bin/mqadmin queryMsgByOffset -n x.x.x.x:9876 -t melon_dev_test -b dev_mq_b -i 2 -o 0 |
字段含义:
名称 | 含义 |
---|---|
-n | NameServer 地址 |
-t | 主题 |
-b | Broker 名字 |
-i | Queue ID |
-o | 偏移量 offset |
OffsetID | 消息 ID |
Topic | 主题名称 |
Tags | 消息的 TAG |
Keys | 消息 KEY |
Queue ID | 消息存储的 Queue |
Queue Offset | 消息在 Queue 中的偏移量 |
CommitLog Offset | 消息在 commitLog 文件中的偏移量 |
Reconsume Times | 重新消费的次数 |
Born Timestamp | 消息诞生的时间戳 |
Store Timestamp | 消息存储的时间戳 |
Born Host | 发送消息的 IP 地址 |
System Flag | 标志信息 |
Properties | 属性信息 |
Message Body Path | 消息体存储路径 |
MessageTrack | 消费情况 |
通过命令 queryMsgByUniqueKey 同样可以检索消息。
命令示例:
1 | $ bin/mqadmin queryMsgByUniqueKey -n dev-mq1.ttbike.com.cn:9876 -t melon_dev_test -i 0A6F4BA1743E7BA18F1B022183DA002B |
字段含义:
字段含义同上面命令。