Nginx статистика в реальном времени

На просторах сети Интернет размещено множество руководств по настройке веб-сервера Nginx, но, почему-то, крайне редко упоминается о встроенном механизме мониторинга активных соединений. А ведь это очень полезная информация, которая поможет следить за состоянием сервера, а также пригодится при настройке и оптимизации Nginx.

За сбор и вывод статистики отвечает модуль ngx_http_stub_status_module.


Проверить установлен ли данный модуль можно выполнив команду:

nginx -V 2>&1 | grep -o with-http_stub_status_module

Если в ответ получили строку:

with-http_stub_status_module

значит модуль установлен. В противном случае нужно пересобирать пакет Nginx с флагом

--with-http_stub_status_module

или, если у Вас Ubuntu, установить пакет nginx-full.

Если необходимый модуль присутствует, нужно настроить специальный location блок для уже существующего сайта, или можно повесить его на localhost.

Добавляем в конфиг виртуального хоста:

  location /nginx_status_page {
    stub_status on;
    access_log   off;
    allow 192.168.1.1;
    deny all;
  }

До версии 1.7.5 синтаксис директивы требовал наличия произвольного аргумента, например “stub_status on”, после достаточно просто“stub_status”. Обратите на это внимание, так как, например, на дистрибутиве Debian 8 из стандартного репозитория устанавливается версия Nginx 1.6.2.

Для безопасности, доступ к странице был ограничен с IP 192.168.1.1, замените его на IP-адрес с которого Вы обращаетесь к сайту.

Теперь при обращении к странице nginx_status_page (например http://yor-site.com/nginx_status_page) Nginx сгенерирует простую веб-страницу с основной информацией о состоянии, вида:

Active connections: 291 
server accepts handled requests
 7368 7368 10993 
Reading: 6 Writing: 179 Waiting: 106

Где:

  • Active connections — Текущее число активных клиентских соединений, включая Waiting-соединения. Это значение не показывает количество пользователей, т.к. один пользователь, для одного просмотра страницы, может открыть множество параллельных подключений к вашему серверу.
  • Server accepts handled requests — показывает три значения:
    • первое — accepts, общее количество принятых подключений;
    • второе — handled, общее количество обработанных подключений. Обычно совпадает с первым значением,если не достигнуто какое-нибудь системное ограничение (например, лимит worker_connections);
    • третье — requests, суммарное число клиентских запросов;
    • разделив третье значение на второе Вы получите количество запросов на одно соединение. В примере выше, 10993 / 7368 = 1.49 запросов на соединение.
  • Reading — текущее число соединений, в которых nginx в настоящий момент читает заголовок запроса.
  • Writing — текущее число соединений, в которых nginx в настоящий момент отвечает клиенту.
  • Waiting — текущее число бездействующих клиентских соединений в ожидании запроса.

Еще один вариант конфигурации, создать виртуальный хост привязав его к localhost:

server {
  listen 80;
  server_name localhost;

  location /nginx_status_page {
    stub_status on;
    allow 127.0.0.1;
    deny all;
  }
}

В данном случае посмотреть статистику можно выполнив команду в консоле сервера:

curl localhost/nginx_status_page

И напоследок, как посмотреть количество подключений к Nginx без  модуля ngx_http_stub_status_module.

Исключаем из вывода утилиты netstat -an строки содержащие TIME_WAIT или выбираем только строки с ESTABLISHED:

netstat -an | grep :443 | grep -v TIME_WAIT | wc -l

или

netstat -an | grep :443 | grep ESTABLISHED | wc -l

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *