全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 阿里云办公 培训与认证 物联网
消息服务

日志管理

更新时间:2017-06-07 13:26:11

MNS 的日志管理功能将用户的消息操作日志推送到指定 LoggingBucket 中。
用户在控制台上配置将日志推送到 OSS 或者 LogService,然后开启该地域队列/主题的日志管理功能,MNS 将自动推送该队列/主题消息的操作日志到指定的 LoggingBucket 中。

推送日志到LogService(必读)

  • 配置方法:推送日志到LogService
  • 日志查看:查看日志——LogService
  • 在为LogStore创建索引时,请选择合理的数据保存时间,该属性后续只支持缩短,不支持延长
  • 如果用户将 LoggingBucket 对应的LogService 的Project、LogStore删除,或者将授予 MNS 的权限取消,日志将无法正常推送给用户;
  • 日志延迟时间约5分钟;

推送日志到OSS(必读)

  • 配置方法:推送日志到OSS
  • 日志查看:查看日志——OSS
  • 如果用户将 LoggingBucket 对应的OSS Bucket删除,或者将授予 MNS 的权限取消,日志将无法正常推送给用户;
  • 日志延迟时间约15分钟;

细节分析

  • 每个地域配置一个 LoggingBucket,该地域所有开通日志管理功能的队列/主题的消息操作日志均推送到该 LoggingBucket中;
  • 每个队列/主题可以独立设置是否开启日志管理功能,默认不开启;

费用解析

  • MNS 不针对日志管理功能收取额外费用;
  • MNS 将日志推送到OSS 或者 LogService中,对应服务会根据存储空间、流量、请求数等进行收费,具体细则请参考:LogService价格总览OSS价格总览
  • 日志量的大小与用户操作 MNS 的 Qps 和操作类型有关系,此处以 SendMessage 操作、Qps 1000为例,计算每分钟的日志量: 178Byte*1000*60/1024/1024 约为 10MB,其中 178 为单条SendMessag操作的日志大小。

队列消息操作日志

队列消息操作日志是指操作队列消息所产生的日志,比如发送消息、消费消息、删除消息等操作。
一条消息操作日志中包含多个字段,每个字段都有自己的含义。
根据操作的不同,消息操作日志所包含的字段也不相同。
接下来,将分别介绍各个字段的含义和不同操作所包含的字段信息。

日志字段解析

一条消息操作日志中包含多个字段,各个字段的含义如表格所示。

字段 含义
Time 本次操作的发生时间
MessageId 消息的 MessageId,标识本次操作处理的消息
QueueName 本次操作对应的队列名称
AccountId 本次操作对应队列的账号
RemoteAddress 发起该操作的客户端地址
NextVisibleTime 该操作执行完成后,这条消息的下次可见时间
ReceiptHandleInRequest 用户执行该操作时传入的 ReceiptHandle 参数
ReceiptHandleInResponse 该操作执行完成后,返回给用户的 ReceiptHandle

各个操作的字段列表

不同操作的日志包含的字段信息各不相同,具体每个操作包含的字段请参考表格。

操作 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 将消息推送给用户时,用户返回的状态码或者相应的出错信息

各个操作的字段列表

不同操作的日志包含的字段信息各不相同,具体每个操作包含的字段请参考表格。

操作 Time MessageId TopicName SubscriptionName AccountId RemoteAddress NotifyStatus SubscriptionName
PublishMessage - - -
Notify -

NotifyStatus

NotifyStatus 是推送消息日志特有的字段,该可以协助您调查MNS 推送消息到 Endpoint失败的原因。
根据不同的 NotifyStatus,您可以按照下表建议的处理方法进行处理。

错误码 描述 建议处理方法
2xx 消息推送成功
其它Http状态码 消息推送给用户,Endpoint 返回了非2xx的状态码 检查 Endpoint 端处理逻辑
InvalidHost 订阅指定的 Endpoint 不合法 确认订阅中 Endpiont 是否真实有效,可使用curl/telnet进行确认
ConnectTimeout 连接订阅指定的 Endpoint 超时 确认订阅中 Endpoint 当前是否可访问,可使用curl/telnet进行确认
ConnectFailure 连接订阅指定的 Endpoint 失败 确认订阅中 Endpoint 当前是否可访问,可使用curl/telnet进行确认
UnknownError 未知错误 请联系 MNS 技术人员支持

日志管理功能可以做什么?

  • 消息成功发送到队列,但消费端收不到消息,消息去哪儿了?
  • 消息被谁消费了、消费了几次?
  • 消费端宕机了,消费失败的消息什么时候可以再次被消费?
  • 消息发布到主题,Endpoint 却迟迟收不到消息?
  • 想看一个月前的消息操作日志?

MNS 的日志管理功能通通满足你!!

  • 将日志推送到LogService,控制台查看完整消息轨迹:查看日志——LogService
  • 使用官网提供查询工具,指定相应参数即可查看消息的处理日志;日志查询命令行工具
  • 登陆OSS控制台,配置LoggingBucket的LifeCycle属性,查看一年前的日志也不是问题:oss控制台
  • 除了官方工具,还可以写写代码,通过 OSS 的 GetObject 接口下载日志文件,做你想做的任何事情;
本文导读目录