本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
轻量消息队列(原 MNS)的日志管理功能将消息请求日志推送到日志服务 SLS(Simple Log Service),然后可以使用SLS的能力查询和分析请求日志功能来定位线上问题。
应用场景
您在收发消息的过程中,是否遇到过以下问题:
消息成功发送到队列,但消费端收不到消息,消息去哪儿了?
消息被谁消费了?消费了几次?
消费端宕机了,消费失败的消息什么时候可以再次被消费?
消息发布到主题,Endpoint却迟迟收不到消息?
这些问题可以通过轻量消息队列(原 MNS)的日志管理功能解决,方法如下:
将日志推送到SLS,在控制台查看完整消息轨迹。
使用官网提供查询工具,指定相应参数即可查看消息的处理日志。
费用说明
轻量消息队列(原 MNS)不针对日志管理功能收取额外费用。
轻量消息队列(原 MNS)将日志推送到SLS,对应服务会根据存储空间、流量、请求数等进行收费,详情请参见计费概述。
队列日志格式说明
队列消息操作日志是指操作队列消息所产生的日志,例如发送消息、消费消息、删除消息等操作。一条消息操作日志中包含多个字段,每个字段都有特定的含义。根据操作的不同,消息操作日志所包含的字段也不相同。以下分别介绍各个字段的含义和不同操作所包含的字段信息。
日志字段解析
一条消息操作日志中包含多个字段,各个字段的含义如下:
字段
含义
字段
含义
Time
本次操作的发生时间。
MessageId
消息的MessageId,标识本次操作处理的消息。
QueueName
本次操作对应的队列名称。
AccountId
本次操作对应队列的账号。
RemoteAddress
发起该操作的客户端地址。
NextVisibleTime
该操作执行完成后,这条消息的下次可见时间。
ReceiptHandleInRequest
客户端执行该操作时传入的ReceiptHandle参数。
ReceiptHandleInResponse
该操作执行完成后,返回客户端的ReceiptHandle。
ProcessTime
本次操作的处理时间。
RequestId
本次执行的任务ID。
Action
表示动作,例如:删除、发送等。
各个操作的字段列表
不同操作的日志包含的字段信息各不相同,具体每个操作包含的字段如下:
操作
Time
QueueName
AccountId
MessageId
RemoteAddress
NextVisibleTime
ReceiptHandleInResponse
ReceiptHandleInRequest
操作
Time
QueueName
AccountId
MessageId
RemoteAddress
NextVisibleTime
ReceiptHandleInResponse
ReceiptHandleInRequest
SendMessage/BatchSendMessage
有
有
有
有
有
有
无
无
PeekMessage/BatchPeekMessage
有
有
有
有
有
无
无
无
ReceiveMessage/BatchReceiveMessage
有
有
有
有
有
有
有
无
ChangeMessageVisibility
有
有
有
有
有
有
有
有
DeleteMessage/BatchDeleteMessage
有
有
有
有
有
有
无
有
主题日志格式说明
主题消息操作日志是指操作主题消息产生的日志,主要有两类:发布消息和推送消息。以下分别介绍主题消息操作日志各个字段的含义,以及不同的操作所包含的字段信息。
日志字段解析
一条消息操作日志中包含多个字段,各个字段的含义如下:
字段
含义
字段
含义
Time
本次操作的发生时间。
MessageId
消息的MessageId,标识本次操作处理的消息。
TopicName
本次操作对应的主题名称。
SubscriptionName
本次操作对应的订阅名称。
AccountId
本次操作对应主题的账号。
RemoteAddress
发起该操作的客户端地址。
NotifyStatus
轻量消息队列(原 MNS)将消息推送给用户时,用户返回的状态码或者相应的出错信息。
ProcessTime
本次操作的处理时间。
MessageTag
设置的消息标签。
RequestId
本次执行的任务ID。
Action
表示动作,例如:删除、发送等。
各个操作的字段列表
不同操作的日志包含的字段信息各不相同,具体每个操作包含的字段如下:
操作
Time
MessageId
TopicName
SubscriptionName
AccountId
RemoteAddress
NotifyStatus
SubscriptionName
操作
Time
MessageId
TopicName
SubscriptionName
AccountId
RemoteAddress
NotifyStatus
SubscriptionName
PublishMessage
有
有
有
无
有
有
无
无
Notify
有
有
有
有
有
无
有
有
NotifyStatus
NotifyStatus是推送消息日志特有的字段,可以帮助您排查轻量消息队列(原 MNS)推送消息到Endpoint失败的原因。 根据不同的NotifyStatus,您可以按照下表建议的处理方法进行处理。
错误码
描述
建议处理方法
错误码
描述
建议处理方法
2xx
消息推送成功。
无。
其它HTTP状态码
消息推送给用户,Endpoint返回了非2xx的状态码。
检查Endpoint端处理逻辑。
InvalidHost
订阅指定的Endpoint不合法。
确认订阅中Endpoint是否真实有效,可使用curl或telnet进行确认。
ConnectTimeout
连接订阅指定的Endpoint超时。
确认订阅中Endpoint当前是否可访问,可使用curl或telnet进行确认。
ConnectFailure
连接订阅指定的Endpoint失败。
确认订阅中Endpoint当前是否可访问,可使用curl或telnet进行确认。
UnknownError
未知错误。
请联系轻量消息队列(原 MNS)技术人员支持。
日志管理操作
如需使用日志功能,请先完成以下操作:
已创建日志服务Project和Logstore。具体操作,请参见创建项目Project和创建Logstore。
您的消息服务操作日志只能被推送到相同地域下的日志服务Project中。
已授权消息服务使用AliyunMNSLoggingRole角色导出日志。
单击云资源访问授权,根据提示完成授权。
请勿取消授权或删除RAM角色,否则将导致轻量消息队列(原 MNS)日志无法正常推送到日志服务。
开启日志功能
推送日志到日志服务
查看日志
日志分析示例
- 本页导读 (1)
- 应用场景
- 费用说明
- 队列日志格式说明
- 主题日志格式说明
- 日志管理操作
- 开启日志功能
- 开启队列的日志功能
- 开启主题的日志功能
- 推送日志到日志服务
- 查看日志
- 日志分析示例