消息服务MNS可以为队列和主题开启日志管理功能,支持将队列或主题的消息操作日志推送到日志服务 SLS(Simple Log Service)。在成功将MNS日志推送到SLS后,MNS支持通过日志查询特定信息。例如在消息发送、消费、确认等环节出现异常时,通过MessageId查询消息轨迹等信息,从而进行异常诊断。
消息服务MNS推送日志到指定LogStore会延迟约3分钟。
前提条件
- 已创建日志服务Project和Logstore。具体操作,请参见创建项目Project和创建Logstore。
您的消息服务操作日志只能被推送到相同地域下的日志服务Project中。
- 已授权消息服务使用AliyunMNSLoggingRole角色导出日志。 单击云资源访问授权,根据提示完成授权。警告 请勿取消授权或删除RAM角色,否则将导致MNS日志无法正常推送到日志服务。
开启日志功能
开启队列的日志功能
登录消息服务MNS控制台。
在左侧导航栏,单击队列列表。
在顶部菜单栏,选择地域。
在队列列表页面,找到目标队列,在其右侧操作列选择更多>编辑。
在编辑队列参数面板中,启用日志功能选择是。
在队列列表页面,目标队列的日志功能列显示为已启用。
开启主题的日志功能
登录消息服务MNS控制台。
在左侧导航栏,单击主题列表。
在顶部菜单栏,选择地域。
在主题列表页面,找到目标主题,在其右侧操作列单击编辑。
在编辑主题参数面板中,启用日志功能选择是。
在主题列表页面,目标主题的日志功能列显示为已启用。
推送日志到日志服务
登录消息服务MNS控制台。
在左侧导航栏,单击日志管理。
在顶部菜单栏,选择地域。
在日志管理页面,在选择目标配置向导页面选择日志服务(SLS)。
在配置目标配置向导页面,选择Project名称和Logstore名称,然后单击启用。
在日志管理页面,显示已配置的Project和Logstore。
查看日志
登录日志服务控制台。
在Project列表区域,单击目标Project。
在控制台左侧,单击日志存储,在日志库列表中单击目标Logstore。
输入查询语句,然后单击最近15分钟,设置查询的时间范围。更多信息,请参见查询和分析日志。
本案例要查询队列消息的消息轨迹,即输入队列名称和消息ID,格式为$QueueName and $MessageId,例如log and EED287A265726135146E6A9CADC8XXXX。
查询结果如下所示,记录了某条消息从发送到接收的过程。
本案例要查询主题消息的消息轨迹,即输入主题名称和MessageId,查询语句格式为$TopicName and $MessageId,例如logtest and 8798453B65727FC6433E6AB4F746XXXX。
查询结果如下图所示,记录了某条消息从发送到通知的过程。
本案例要查询队列消息发送量,即输入队列名称和发送操作,查询语句格式为$QueueName and (SendMessage or BatchSendMessage),例如log and (SendMessage or BatchSendMessage)。
查询结果如下所示,当前查询时段内,生产者向log队列发送了3条队列消息。
本案例要查询主题消息发送量,即输入主题名称和发布操作,查询语句格式为$TopicName and PublishMessage,例如logtest and PublishMessage。
查询结果如下图所示,当前查询时段内,生产者向logtest主题发送了3条消息。
本案例要查询队列消息消费量,即输入队列名称和消费操作,查询语句格式为$QueueName and (ReceiveMessage or BatchReceiveMessage),例如log and (ReceiveMessage or BatchReceiveMessage)。
查询结果如下所示,当前查询时段内,log队列中有12条消息被消费。
本案例要查询队列消息删除量,即输入队列名称和删除操作,查询语句格式为$QueueName and (DeleteMessage or BatchDeleteMessage),例如log and (DeleteMessage or BatchDeleteMessage)。
查询结果如下所示,当前查询时段内,61条log队列消息被删除。
本案例要查询某个客户端消息处理量,即输入客户端IP地址,查询语句格式为$ClientIP,例如10.10.10.0。
如果您要查询某个客户端的某类操作日志,可使用多个关键字组合方式,例如$ClientIP and (SendMessage or BatchSendMessage)。
查询结果如下图所示,当前查询时段内,该客户端处理了66条消息。