Как отслеживать время отклика nginx с помощью стека ELK? - PullRequest
2 голосов
/ 10 ноября 2019

Я хотел бы создать монитор, который будет показывать среднее время отклика nginx в реальном времени.

Ниже на рисунке показано использование процессора, например, я хотел бы создать нечто подобное для avg response time

enter image description here

Я знаю, какЯ могу отслеживать время отклика для отдельных запросов (https://lincolnloop.com/blog/tracking-application-response-time-nginx/)

Хотя мне придется подумать, как игнорировать нестраничные / API-запросы, такие как статический запрос изображения.

Это должно быть довольно основные требования, но не могу найти Google, как это сделать.

1 Ответ

1 голос
/ 11 ноября 2019

Это на самом деле хитрее, чем вы ожидаете:

Metricbeat

Модуль nginx Metricbeat не содержит этой информации. Он построен на stubstatus и больше относится к самому процессу , а не к срокам отдельных запросов.

Filebeat

Модуль nginx для Filebeat - это то, где вы можете ожидать этого. Он построен на основе журнала доступа 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 (это только время дляначальное рукопожатие) или информация о потоке (это * группа пакетов ) - это не то, что вам нужно после IMO.

Настройка

Боюсь, вам понадобится немногонастройка, и у вас есть два основных варианта:

  1. Настройте формат журнала nginx, как описано в сообщении в блоге, на которое вы ссылаетесь. Вам также нужно изменить шаблон в конвейере загрузки Elasticsearch для правильного извлечения информации о времени.
  2. Я предполагаю, что у вас есть приложение, стоящее за nginx. Тогда вам, возможно, захочется получить еще больше информации об этом, чем просто синхронизацию, используя (APM / трассировка] (https://www.elastic.co/products/apm) с агентами для разных языков. Таким образом, вы также автоматически пропустите статические ресурсы, такие как изображения, и сосредоточитесь насоответствующие части вашего приложения.
...