调用OnsConsumerStatus接口查询指定Group ID的详细状态数据,包含订阅关系检查、消费TPS统计、负载均衡状态、消费端连接等。
使用说明
- 本接口一般用于在粗略判断消费堆积以及客户端在线状态后,需要排查消费异常原因的场景。可以根据返回结果判断出指定Group ID的订阅关系是否一致、负载均衡是否正常以及获取在线客户端的Jstack信息等。
- 使用本接口需要调用大量后端接口以完成数据聚合,因此查询速度慢,不建议频繁调用。
QPS限制
本接口的单用户QPS限制为10次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。更多信息,请参见QPS限制。
授权信息
默认仅限阿里云账号使用本接口,RAM用户只有在被授予了相关API操作权限后方可使用。本接口的授权信息如下表所示。更多信息,请参见权限策略和示例。
API |
Action |
Resource(有命名空间) |
Resource(无命名空间) |
---|---|---|---|
OnsConsumerStatus |
mq:QueryInstanceBaseInfo mq:QueryConsumerStatus |
acs:mq:*:*:{instanceId}%{groupId} |
acs:mq:*:*:{groupId} |
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | OnsConsumerStatus |
系统规定参数。取值:OnsConsumerStatus。 |
GroupId | String | 是 | GID_test_group_id |
需要查询的消费端Group ID。 |
Detail | Boolean | 否 | true |
是否查询详细信息。取值说明如下:
|
NeedJstack | Boolean | 否 | true |
是否打印Jstack信息。取值说明如下:
|
InstanceId | String | 是 | MQ_INST_111111111111_DOxxxxxx |
需查询的Group ID所对应的实例ID。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 10EDC518-10E7-4B34-92FB-171235FA**** |
公共参数,每个请求的ID都是唯一的,可用于排查和定位问题。 |
Data | Object |
查询结果。 |
|
ConsumeTps | Float | 0 |
总消费TPS。 |
ConsumeModel | String | CLUSTERING |
消费模型。取值说明如下:
两种订阅模式的详细信息,请参见集群消费和广播消费。 |
ConnectionSet | Array of ConnectionDo |
该集群当前在线客户端信息。 |
|
ConnectionDo | |||
RemoteIP | String | 42.120.74.** |
宿主机IP地址或公网IP地址。 |
Version | String | V4_3_6_SNAPSHOT |
消费端版本。 |
ClientAddr | String | 30.5.121.** |
该消费实例的地址和端口。 |
Language | String | JAVA |
消费端语言。 |
ClientId | String | 30.5.121.**@25560#-1999745829#-1737591554#458773089270275 |
消费实例的ID。 |
TotalDiff | Long | 197 |
集群总的消费堆积。 |
ConsumerConnectionInfoList | Array of ConsumerConnectionInfoDo |
该集群在线客户端详细信息,包含Jstack、消费RT时间等信息。如需获取详细信息,请确保将Detail请求参数设置为true。否则返回值为空。 |
|
ConsumerConnectionInfoDo | |||
ConsumeModel | String | CLUSTERING |
消费模型。取值说明如下:
两种订阅模式的详细信息,请参见集群消费和广播消费。 |
RunningDataList | Array of ConsumerRunningDataDo |
实时状态统计。 |
|
ConsumerRunningDataDo | |||
GroupId | String | 0 |
订阅方的Group ID。 |
Rt | Float | 0 |
消费RT时间,单位ms。 |
Topic | String | test-mq_topic |
订阅的Topic名称。 |
FailedCountPerHour | Long | 0 |
每小时内消费失败的消息数统计。 |
OkTps | Float | 0 |
消费消息成功的TPS统计。 |
FailedTps | Float | 0 |
消费消息失败的TPS统计。 |
SubscriptionSet | Array of SubscriptionData |
订阅关系集合。 |
|
SubscriptionData | |||
SubString | String | * |
订阅该Topic的子类别Tag表达式。 |
SubVersion | Long | 1570701364301 |
订阅关系版本号,为自增Long型。 |
Topic | String | test-mq_topic |
订阅的Topic名称。 |
TagsSet | Array of String | ff |
订阅的Tag集合。 |
Jstack | Array of ThreadTrackDo |
Jstack堆栈信息。如需获取Jstack信息,请确保将NeedJstack入参设置为true。否则返回值为空。 |
|
ThreadTrackDo | |||
TrackList | Array of String | TID: 52 STATE: WAITING |
Jstack堆栈信息字符串。 |
Thread | String | ConsumeMessageThread_0 |
线程名称。 |
LastTimeStamp | Long | 1570701368114 |
最后消费时间。 |
StartTimeStamp | Long | 1570701361528 |
消费开始时间。 |
Language | String | JAVA |
客户端语言。 |
ClientId | String | 30.5.**.**@25560#-1999745829#-1737591554#458773089270275 |
消费实例的ID。 |
Connection | String | ** |
连接信息。 |
Version | String | V4_3_6 |
客户端版本号。 |
ConsumeType | String | PUSH |
消费者消费消息的模式。取值说明如下:
|
ThreadCount | Integer | 20 |
消费线程数。 |
InstanceId | String | MQ_INST_111111111111_DOxxxxxx |
实例ID。 |
DetailInTopicList | Array of DetailInTopicDo |
各个Topic的消费情况。如需获取详细信息,请确保将Detail请求参数设置为true。否则返回值为空。 |
|
DetailInTopicDo | |||
DelayTime | Long | 0 |
延迟时间。 |
TotalDiff | Long | 0 |
该Topic消费总堆积数。 |
LastTimestamp | Long | 1570701259403 |
最后消费时间。 |
Topic | String | test-mq_topic |
Topic名称。 |
SubscriptionSame | Boolean | true |
订阅关系是否一致。 |
DelayTime | Long | 100857 |
延迟时间。 |
LastTimestamp | Long | 1566883844954 |
最后消费时间。 |
Online | Boolean | true |
是否在线。 |
RebalanceOK | Boolean | true |
客户端Rebalance是否正常。取值说明如下:
|
示例
请求示例
http(s)://ons.cn-hangzhou.aliyuncs.com/?Action=OnsConsumerStatus
&GroupId=GID_test_group_id
&InstanceId=MQ_INST_111111111111_DOxxxxxx
&NeedJstack=true
&Detail=true
&<公共请求参数>
正常返回示例
XML
格式
HTTP/1.1 200 OK
Content-Type:application/xml
<OnsConsumerStatusResponse>
<data>
<connectionSet>
<bizVersion>V4_3_6</bizVersion>
<clientAddr>30.5.***.*</clientAddr>
<clientId>30.5.***.*@97730#-1999745829#-1737591554#729272961762836</clientId>
<language>JAVA</language>
<version>V4_3_6</version>
</connectionSet>
<consumeModel>CLUSTERING</consumeModel>
<consumeTps>0</consumeTps>
<consumerConnectionInfoList>
<bizVersion>V4_3_6</bizVersion>
<clientId>30.5.***.*@97730#-1999745829#-1737591554#729272961762836</clientId>
<consumeType>PUSH</consumeType>
<jstack>
<thread>ConsumeMessageThread_4</thread>
<trackList>TID: 44 STATE: WAITING</trackList>
<trackList>sun.misc.Unsafe.park(Native Method)</trackList>
<trackList>java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)</trackList>
<trackList>java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)</trackList>
<trackList>java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)</trackList>
<trackList>java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)</trackList>
<trackList>java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)</trackList>
<trackList>java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)</trackList>
<trackList>java.lang.Thread.run(Thread.java:748)</trackList>
</jstack>
<language>JAVA</language>
<lastTimeStamp>1570701368114</lastTimeStamp>
<runningDataList>
<failedCountPerHour>0</failedCountPerHour>
<failedTps>0</failedTps>
<okTps>0</okTps>
<rt>0</rt>
<topic>test-mq_topic</topic>
</runningDataList>
<startTimeStamp>1570701361528</startTimeStamp>
<subscriptionSet>
<subString>*</subString>
<subVersion>1570701364301</subVersion>
<topic>test-mq_topic</topic>
</subscriptionSet>
<threadCount>20</threadCount>
<version>V4_3_6</version>
</consumerConnectionInfoList>
<delayTime>0</delayTime>
<detailInTopicList>
<delayTime>0</delayTime>
<lastTimestamp>1570701259403</lastTimestamp>
<topic>test-mq_topic</topic>
<totalDiff>0</totalDiff>
</detailInTopicList>
<instanceId>MQ_INST_111111111111_DOxxxxxx</instanceId>
<lastTimestamp>1570701368114</lastTimestamp>
<online>true</online>
<rebalanceOK>true</rebalanceOK>
<subscriptionSame>true</subscriptionSame>
<totalDiff>0</totalDiff>
</data>
<requestId>10EDC518-10E7-4B34-92FB-171235FA****</requestId>
</OnsConsumerStatusResponse>
JSON
格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"data" : {
"connectionSet" : [ {
"bizVersion" : "V4_3_6",
"clientAddr" : "30.5.***.*",
"clientId" : "30.5.***.*@97730#-1999745829#-1737591554#729272961762836",
"language" : "JAVA",
"version" : "V4_3_6"
} ],
"consumeModel" : "CLUSTERING",
"consumeTps" : 0,
"consumerConnectionInfoList" : [ {
"bizVersion" : "V4_3_6",
"clientId" : "30.5.***.*@97730#-1999745829#-1737591554#729272961762836",
"consumeType" : "PUSH",
"jstack" : [ {
"thread" : "ConsumeMessageThread_1",
"trackList" : [ "TID: 44 STATE: WAITING", "sun.misc.Unsafe.park(Native Method)", "java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)", "java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)", "java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)", "java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)", "java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)", "java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)", "java.lang.Thread.run(Thread.java:748)" ]
} ],
"language" : "JAVA",
"lastTimeStamp" : 1570701368114,
"runningDataList" : [ {
"failedCountPerHour" : 0,
"failedTps" : 0,
"okTps" : 0,
"rt" : 0,
"topic" : "test-mq_topic"
} ],
"startTimeStamp" : 1570701361528,
"subscriptionSet" : [ {
"subString" : "*",
"subVersion" : 1570701364301,
"tagsSet" : [ ],
"topic" : "test-mq_topic"
} ],
"threadCount" : 20,
"version" : "V4_3_6"
} ],
"delayTime" : 0,
"detailInTopicList" : [ {
"delayTime" : 0,
"lastTimestamp" : 1570701259403,
"topic" : "test-mq_topic",
"totalDiff" : 0
} ],
"instanceId" : "MQ_INST_111111111111_DOxxxxxx",
"lastTimestamp" : 1570701368114,
"online" : true,
"rebalanceOK" : true,
"subscriptionSame" : true,
"totalDiff" : 0
},
"requestId" : "10EDC518-10E7-4B34-92FB-171235FA****"
}
错误码
访问错误中心查看更多错误码。
控制台操作
除了调用OnsConsumerStatus接口,您还可以通过消息队列RocketMQ版控制台查看Group ID的详细数据。具体操作,请参见查看消费者状态。