У меня nginx работает как балансировщик нагрузки перед несколькими веб-серверами. Я хотел бы видеть статистику в реальном времени с указанием времени ответа (может быть, гистограмма за последние 10 секунд?)
Я думаю, что у Varnish есть нечто подобное
Tail не очень полезен, так как в секунду выполняется около 1 тыс. Запросов.
Вы знаете какой-нибудь инструмент, который может это сделать? (просто чтобы я не изобретал велосипед)
редактировать
Я думаю, что в исходном посте я не был достаточно ясен. Мы уже используем collectd для получения различных видов статистики со всех серверов, и у нас есть хороший интерфейс, чтобы увидеть эти графики вживую.
Ищу что-то похожее на htop
Вы знаете о Заготовка статистики Nginx, право? Внизу страницы есть ссылки на методы мониторинга Nginx. Однако я не уверен в том, сколько времени откликнется на это.
У меня нет конкретного решения, поэтому, надеюсь, кто-то еще вмешается, но это похоже на работу для RRDTool. Вам нужно будет найти (или написать) что-то, что будет извлекать нужные вам данные из журнала в базу данных с циклическим перебором, но инструмент настроен для обработки именно того, о чем вы говорите, только самых последних фрагмент данных временного ряда.
К сожалению, я не знаю ни одного существующего способа получить данные о времени отклика в реальном времени. Учитывая, что я ожидаю, что это будет редкий случай, когда вам нужно будет проверить такие данные, кажется вероятным, что требуемые затраты на производительность (т.е. дополнительная обработка / ведение журнала на запрос) не кажутся оправданными. Я бы посоветовал просто записывать данные о времени отклика в свои журналы (например, как это) и запустите сценарий оболочки, чтобы проанализировать часть ваших журналов (и вывести сводку), когда вас интересуют данные.
Получить статистику в реальном времени не так уж сложно, но получить время отклика с ней труднее. Приведенные ниже подходы предоставляют только необработанные данные - они не отображают их за вас.
Если ты сможешь жить без время отклика (например, просто запрос / с - и разбивка по # чтению, записи, активным, общим соединениям и т. д.), используйте Модуль состояния заглушки HTTP. Он обеспечивает текстовый вывод информации, которую можно легко запросить и проанализировать. (Чтобы использовать этот модуль, Nginx должен быть скомпилирован с --with-http_stub_status_module
)
Пример вывода:
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
(3-я строка - принятые соединения, обработанные соединения, принятые запросы)
Есть интересная статья об использовании этих данных для создания графиков с помощью rrdtool, Вот.
Если данные о времени отклика особенно важны для вас, должна быть возможность изменить модуль состояния заглушки. Код (на самом деле всего около 5 КБ) находится в src/http/modules/ngx_http_stub_status_module.c
. Например, есть модификация Вот модуль выводит агрегированные количества возвращенных кодов состояния HTTP.
Наконец, если вам просто нужно время ответа. Вы можете сохранить данные в Memcached, используя Модуль HTTP Memc. Для целей вашей гистограммы вы, по сути, должны создавать 2 ключа в секунду - основывать ключ на времени (например, $time_local
) - один ключ для хранения счетчика количества запросов за эту секунду и один для хранения среднего времени ответа (или совокупного времени ответа) - работа с $request_time
и / или $upstream_response_time
переменные.
Я уверен, что вы сможете найти простой способ построения графиков данных, когда они у вас есть, но вот некоторые из возможных отправных точек:
watch
для отслеживания вывода скрипта.as_ascii
), хотя для этой цели он кажется чрезмерным.