您可以使用消息队列RabbitMQ版的日志管理功能将消息队列RabbitMQ版实例的消息操作日志推送到日志服务。当消息的发送、消费、确认出现异常时,您可在日志服务查询并分析消息的操作日志,进行异常诊断。
前提条件
在将消息队列RabbitMQ版实例的消息操作日志推送到日志服务前,请确保您已完成以下操作:
- 开通消息队列RabbitMQ版服务并创建实例。具体操作,请参见开通消息队列RabbitMQ版和实例管理。
- 开通日志服务并创建Project和Logstore。具体操作,请参见资源管理概述。
适用场景
消息队列RabbitMQ版的消息日志管理功能适用于以下场景:- 排查异常,例如消息成功发送,但消费端收不到消息。
- 查看消息的消费者或消费次数。
- 查看一个月前或者更久之前的消息操作日志。
注意事项
- 如果您删除Project、Logstore,或者将授予消息队列RabbitMQ版的权限取消,日志将无法正常推送。
- 为方便查询消息日志,建议您在使用SDK收发消息时设置Message ID。具体操作,请参见如何设置Message ID。
- 每个消息队列RabbitMQ版实例可以配置LoggingBucket,默认不配置。
- 消息队列RabbitMQ版日志被推送到日志服务后,日志服务会根据存储空间、流量、请求数等进行收费。更多信息,请参见计费项。
操作步骤
为消息队列RabbitMQ版实例配置LoggingBucket,将日志推送到日志服务。
后续步骤
- 通过消息队列RabbitMQ版SDK发送消息,并订阅消息。具体操作,请参见SDK概述。
- 查询消息。具体操作,请参见查询消息。
- 您可以登录日志服务控制台对日志进行查询与分析。具体操作,请参见查询和分析日志。
查询结果示例如下图所示。
参数 描述 Action 动作。 取值: - MessagePublish:消息发布。
- MessageAck:消息确认。
- MessageReceived:消息消费。
Code 状态码。 取值: - 200:请求成功。
- 541:服务端内部错误。
- 503:无效的命令。
- 530:不允许的操作。
- 404:资源不存在。
- 406:预检查失败。
- 403:权限错误。
Exchange Exchange名称。您可以在消息队列RabbitMQ版控制台的Exchange管理页面查看。 Info 请求成功时为空,否则为错误状态码信息。 InstanceId 消息队列RabbitMQ版实例的ID。您可以在消息队列RabbitMQ版控制台的实例详情页面或概览页面查看。 MessageId 使用SDK发送消息时设置的Message ID。 OwnerUid 阿里云账号(主账号)ID。您可以在阿里云账号管理控制台获取。 Queues 由Queue名称和系统自动生成的唯一消息ID组成,以竖线(|)分隔。当Action为MessageAck时,则为系统自动生成的唯一消息ID。 RemoteAddress - Action为MessagePublish时,为Producer客户端地址。
- Action为MessageAck时,为Consumer客户端地址。
- Action为MessageReceived时,为Consumer客户端地址。
ReqUid - 如果您使用RAM用户收发消息,则为RAM用户ID。
- 如果您使用阿里云账号(主账号)收发消息,则为阿里云账号ID。
Routingkey 您在使用SDK发送消息时设置的Routing Key。 VHost Vhost名称。您可以在消息队列RabbitMQ版控制台的Vhost管理页面查看。 _source_ 该参数为日志服务SLS(Log Service)的保留字段。如果您想了解该字段的含义,请参见保留字段。 __tag__:__receive_time__ 该参数为日志服务SLS的保留字段。如果您想了解该字段的含义,请参见保留字段。基于该字段具体如何统计消息的轨迹,请参见查询TPS统计图表。 __topic__ 该参数为日志服务SLS的保留字段。如果您想了解该字段的含义,请参见保留字段。