我想创建一个监视器,它将显示 Nginx 的近实时平均响应时间。
例如,下图显示了 CPU 使用情况,我想为avg response time
我知道如何跟踪单个请求的响应时间(https://lincolnloop.com/blog/tracking-application-response-time-nginx/)
虽然我必须考虑如何忽略非页面/api 请求,例如静态图像请求。
这必须是非常基本的要求,但无法找到谷歌如何做到这一点。
我想创建一个监视器,它将显示 Nginx 的近实时平均响应时间。
例如,下图显示了 CPU 使用情况,我想为avg response time
我知道如何跟踪单个请求的响应时间(https://lincolnloop.com/blog/tracking-application-response-time-nginx/)
虽然我必须考虑如何忽略非页面/api 请求,例如静态图像请求。
这必须是非常基本的要求,但无法找到谷歌如何做到这一点。
这实际上比您预期的要棘手:
Metricbeat 的 nginx 模块不包含此信息。它是围绕stubstatus 构建的,并且更多地围绕流程本身而不是单个请求的时间安排。
Filebeat 的 nginx 模块是您可能期望的。它围绕 nginx 访问日志构建并具有单独的请求。不幸的是,响应时间默认不是访问日志的一部分(至少在 Ubuntu 上)——只有发送的字节数。这是一个示例(响应代码 200,发送了 158 个字节):
34.24.14.22 - - [10/Nov/2019:06:54:51 +0000] "GET / HTTP/1.1" 200 159 "-" "Go-http-client/1.1"
这个领域有一个event.duration
听起来很有希望的领域。但是要小心 HTTP 模块——这个模块实际上只用于 HTTP 流量而不是 HTTPS(因为你看不到加密的流量)。在大多数情况下,您会希望为您的应用程序使用 HTTPS,因此这并不是很有帮助,并且主要会显示到 HTTPS 的重定向。
其他协议,例如 TLS(这只是初始握手的时间)或流信息(这是一组数据包)不是您在 IMO 之后的样子。
恐怕你需要一些定制,你基本上有两个选择: