本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
轻量消息队列(原 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 - 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 - 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)日志无法正常推送到日志服务。 
 > 编辑
 > 编辑






