本文介绍基于消息队列RabbitMQ版当前日志快速查询近似的TPS统计图表的方法。当您遇到TPS流量超限时,通过该方法可以及时查询秒级的TPS统计图表,帮助您高效识别出异常,保证业务正常运行。

前提条件

登录消息队列RabbitMQ版控制台,将消息队列RabbitMQ版实例的消息操作日志推送到日志服务。具体操作,请参见配置消息日志

背景信息

  • 当前云监控提供的图表是分钟级统计数据的平均值,无法展示秒级的TPS统计数据。本文提供了将消息队列RabbitMQ版当前实例的消息操作日志推送到日志服务SLS(Log Service),在SLS中配置索引字段,使用SLS分析语句统计TPS流量图表的操作方法。
  • 消息队列RabbitMQ版的TPS统计了每秒Client主动发起的AMQP协议方法请求数量。请求方法如表 1所示。
    表 1. TPS统计的AMQP协议请求方法
    请求方法 说明
    ConnectionOpen 开启连接
    ChannelOpen 开启Channel
    说明 ChannelOpen当前没有输出在日志中,通过SLS日志统计时不包含该方法的请求次数。因此,通过SLS日志配置统计出来的TPS值会小于实际发起的请求量。
    MessagePublish 消息发布
    MessageReceived 订阅消息
    说明 对于MessageReceived请求方法,TPS仅统计Pull模式的消息机制,Push模式并不统计。
    MessageAck 消息确认
    ExchangeDeclare 声明一个Exchange
    QueueDeclare 声明一个Queue
    QueueBind 绑定Queue
    QueueDelete 删除Queue
    ExchangeDelete 删除Exchange
    QueueUnBind 与Queue解除绑定

操作步骤

  1. 登录日志服务控制台,配置日志字段索引。具体操作,请参见配置索引。除自动生成的普通字段之外,还需手动添加__tag__:__receive_time__字段,并设置别名为timestamp,如下图所示。
    配置索引字段
  2. 设置查询的时间段,配置统计图表的属性,在搜索框输入SLS分析语句,查询TPS统计图表。具体操作,请参见查询和分析日志
    • 如果使用Push模式(basicConsume)订阅消息,请使用如下分析语句查询TPS统计图表,查询语句中的[instanceid]需替换为查询的实例ID。
      * and [instanceid] and Code : 200 and (Action : MessagePublish or Action : MessageAck or Action: ExchangeDeclare or Action: QueueBind or Action : QueueDeclare or Action : QueueDelete or Action : ExchangeDelete or Action : QueueUnBind) | select from_unixtime (cast(timestamp AS double)) as time, COUNT(*) as count  GROUP by time ORDER by time
    • 如果使用Pull模式(basicGet)订阅消息,请使用如下分析语句查询TPS统计图表,查询语句中的[instanceid]需替换为查询的实例ID。
      * and [instanceid] and Code : 200 and (Action : MessagePublish or Action : MessageAck or Action : MessageReceived or Action: ExchangeDeclare or Action: QueueBind or Action : QueueDeclare or Action : QueueDelete or Action : ExchangeDelete or Action : QueueUnBind) | select from_unixtime (cast(timestamp AS double)) as time, COUNT(*) as count  GROUP by time ORDER by time 
    TPS统计图表