消息服务的日志如何管理?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

消息服务的日志如何管理?

2017-10-24 11:35:58 1608 0

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

各个操作的字段列表

不同操作的日志包含的字段信息各不相同,具体每个操作包含的字段请参考表格。
操作TimeQueueNameAccountIdMessageIdRemoteAddressNextVisibleTimeReceiptHandleInResponseReceiptHandleInRequest
SendMessage/BatchSendMessage--
PeekMessage/BatchPeekMessage---
ReceiveMessage/BatchReceiveMessage-
ChangeMessageVisibility
DeleteMessage/BatchDeleteMessage-


主题消息操作日志


主题消息操作日志是指操作主题消息产生的日志,主要有两类:发布消息和推送消息。接下来,将介绍主题消息操作日志各个字段的含义,以及不同的操作所包含的字段信息。

日志字段解析

一条消息操作日志中包含多个字段,各个字段的含义如表格所示。
字段含义
Time本次操作的发生时间
MessageId消息的 MessageId,标识本次操作处理的消息
TopicName本次操作对应的主题名称
SubscriptionName本次操作对应的订阅名称
AccountId本次操作对应主题的账号
RemoteAddress发起该操作的客户端地址
NotifyStatusMNS 将消息推送给用户时,用户返回的状态码或者相应的出错信息

各个操作的字段列表

不同操作的日志包含的字段信息各不相同,具体每个操作包含的字段请参考表格。
操作TimeMessageIdTopicNameSubscriptionNameAccountIdRemoteAddressNotifyStatusSubscriptionName
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 却迟迟收不到消息?
  • 想看一个月前的消息操作日志?

[backcolor=transparent]MNS 的日志管理功能通通满足你!!
  • 将日志推送到LogService,控制台查看完整消息轨迹:查看日志——LogService
  • 使用官网提供查询工具,指定相应参数即可查看消息的处理日志;日志查询命令行工具
  • 登陆OSS控制台,配置LoggingBucket的LifeCycle属性,查看一年前的日志也不是问题:oss控制台
  • 除了官方工具,还可以写写代码,通过 OSS 的 GetObject 接口下载日志文件,做你想做的任何事情;
取消 提交回答
全部回答(0)
相关问答

4

回答

Spark 【问答合集】

社区小助手 2019-05-29 14:13:40 127128浏览量 回答数 4

38

回答

干货分享:DBA专家门诊一期:索引与sql优化问题汇总

xiaofanqie 2014-12-25 15:13:38 92078浏览量 回答数 38

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 337001浏览量 回答数 8

110

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 295540浏览量 回答数 110

82

回答

OSS入门教程

belle.zhoux 2014-07-07 17:14:27 151447浏览量 回答数 82

88

回答

手把手教你搭建自己的OSS FTP 服务器

lei.zhuol 2012-05-16 14:48:33 90055浏览量 回答数 88

24

回答

【精品问答】python技术1000问(1)

问问小秘 2019-11-15 13:25:00 475621浏览量 回答数 24

27

回答

阿里云开源软件镜像站点上线啦!!

qilu 2014-01-06 18:14:06 96088浏览量 回答数 27

2

回答

区域选择帮助

fanyue88888 2012-12-07 15:54:30 204385浏览量 回答数 2

11

回答

【精品问答合集】MongoDB热门问答

李博 bluemind 2019-05-29 16:50:19 121319浏览量 回答数 11
+关注
2351
文章
701
问答
问答排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载