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

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

下图显示了CPU使用率,例如,我想为avg response time创建类似的内容

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

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

尽管我将不得不考虑如何忽略非页面/ api请求,例如静态图像请求。

这必须是非常基本的要求,但找不到Google该怎么做。

alv123456 回答:如何使用ELK堆栈监视nginx响应时间?

这实际上比您预期的要复杂:

Metricbeat

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

Filebeat

您可能期望在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"

Packetbeat

此字段有一个名为event.duration的字段,听起来很有希望。但是请注意HTTP模块-该模块实际上仅用于HTTP流量,而不是HTTPS(因为您看不到加密的流量)。在大多数情况下,您将希望对应用程序使用HTTPS,因此这并不是很有用,它通常会显示重定向到HTTPS。

其他协议,例如TLS(这只是初始握手的时间)或Flow信息(这是group of packets),与IMO无关。

自定义

恐怕您需要一些自定义,并且您基本上有两个选择:

  1. 根据您链接到的博客文章中的描述,自定义nginx的日志格式。您还需要在Elasticsearch提取管道中更改模式,以正确提取时序信息。
  2. 我假设您在nginx后面有一个应用程序。然后,您可能希望通过将(APM / tracing](https://www.elastic.co/products/apm)与各种语言的代理一起使用来获得更多的见解,而不仅仅是计时,这样您还将自动跳过图像等静态资源并专注于您应用程序的相关部分。
本文链接:https://www.f2er.com/3128879.html

大家都在问