使用 HAProxy 的 HTTP 请求持续时间

使用 HAProxy 的 HTTP 请求持续时间

是否可以监控HTTP 请求的持续时间?(从负载均衡器收到请求,到负载均衡器将响应返回给客户端的时间)

我想在前端监控这个指标,因为我想包括排队时间。如果我测量后端的持续时间,我可能会得到很好的统计数据,但实际性能可能很差(例如,如果请求在负载均衡器本身中排队)。

例如,我想在流量高峰期间监控 Web 应用程序,以确保从用户的角度来看响应仍然很快(例如 < 3 秒)。

答案1

HAproxy 在日志中提供了所有这些信息。

Haproxy HTTP 日志格式

具体来说,您要查找的是第 6 节,

6 TR '/' Tw '/' Tc '/' Tr '/' Ta* 10/0/30/69/109

在哪里

  • “TR” 是收到第一个字节后等待客户端发送完整 HTTP 请求(不计算正文)的总时间(以毫秒为单位)。如果在收到完整请求之前中止连接或收到错误请求,则该值可以是“-1”。该值应该始终很小,因为请求通常包含在一个数据包中。此处的较大时间通常表示客户端和 haproxy 之间存在网络问题或请求是手动输入的。有关更多详细信息,请参阅下面的“计时器”。

  • “Tw” 是等待各个队列的总时间(以毫秒为单位)。如果连接在到达队列之前被中止,则该值可以是“-1”。有关更多详细信息,请参阅下面的“计时器”。

  • “Tc”是等待与最终服务器建立连接的总时间(以毫秒为单位),包括重试。如果在建立连接之前请求被中止,则该值可以是“-1”。有关更多详细信息,请参阅下面的“计时器”。

  • “Tr” 是等待服务器发送完整 HTTP 响应(不计算数据)的总时间(以毫秒为单位)。如果在收到完整响应之前中止请求,则该值可以是“-1”。它通常与服务器处理请求的时间一致,但可能会因客户端向服务器发送的数据量而改变。此处“GET”请求的大量时间通常表示服务器过载。有关更多详细信息,请参阅下面的“计时器”。

  • “Ta” 是请求在 haproxy 中保持活动状态的时间,即从收到请求的第一个字节到发送响应的最后一个字节之间经过的总时间(以毫秒为单位)。它涵盖了除握手(参见 Th)和空闲时间(参见 Ti)之外的所有可能的处理。有一个例外,如果指定了“option logasap”,则时间计数将在发出日志时停止。在这种情况下,值前面会添加一个“+”号,表示最后一个值会更大。有关更多详细信息,请参阅下面的“计时器”。

可以通过多种方式将这些指标从日志导出到更有用的格式/后端,其中最引人注目的是 Logstash,因为它可以解析这些日志并将其发送到许多不同的后端

相关内容