gpt4 book ai didi

nginx - 如何使用 ELK 堆栈监控 nginx 响应时间?

转载 作者:行者123 更新时间:2023-12-04 11:01:10 27 4
gpt4 key购买 nike

我想创建一个监视器,它将显示 Nginx 的近实时平均响应时间。

例如,下图显示了 CPU 使用情况,我想为 avg response time 创建类似的东西

enter image description here

我知道如何跟踪单个请求的响应时间 (https://lincolnloop.com/blog/tracking-application-response-time-nginx/)

虽然我必须考虑如何忽略非页面/api 请求,例如静态图像请求。

这必须是非常基本的要求,但无法找到谷歌如何做到这一点。

最佳答案

这实际上比您预期的要棘手:

Metricbeat

Metricbeat 的 nginx 模块不包含此信息。它是围绕 stubstatus and is more around the process itself 构建的而不是个别请求的时间安排。

文件节拍

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 的重定向。

其他协议(protocol),例如 TLS(这只是初始握手的时间)或流信息(这是一个 group of packets )不是你在 IMO 之后的样子。

定制

恐怕你需要一些定制,你基本上有两个选择:
  • 自定义 nginx 的日志格式,如您链接到的博客文章中所述。您还需要更改 Elasticsearch 摄取管道中的模式以正确提取时间信息。
  • 我假设您在 nginx 后面有一个应用程序。然后,您可能希望通过将 (APM/tracking]( https://www.elastic.co/products/apm ) 与各种语言的代理一起使用来获得更多的洞察力,而不仅仅是计时。这样,您还将自动跳过图像等静态资源并专注于相关应用程序的一部分。
  • 关于nginx - 如何使用 ELK 堆栈监控 nginx 响应时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58789638/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com