Мониторинг Nginx с помощью MRTG

Nginx - веб-сервер и почтовый прокси-сервер, часто используемый в качестве фронтенда на веб-проектах с высокой посещамостью. Периодически возникает необходимость следить за количеством обрабатываемых им запросов чтобы своевременно реагировать на рост нагрузки. Далее будет показано как можно организовать мониторинг Nginx с помощью MRTG.

Для начала включи в nginx вывод статуса. Для этого в конфигурацию одного из виртуальных хостов надо добавить строки:

        # По этому пути будет доступен статус сервера
        location /nginx_status {
                # Включение отображения статуса
                stub_status on;
                # Кому разрешён доступ сюда. Как минимум нашему серверу мониторинга
                allow 10.12.14.16;
                # Заодно сети, в которой сидят наши администраторы (на всякий случай)
                allow 172.17.233.0/25;
                # Всем остальным доступ закрываем
                deny    all;
         }

После этого перезапускаем nginx. Теперь при обращении к локации "/nginx_status" нашего виртуального хоста с одного из разрешённых адресов мы получим примерно вотакую информацию:

Active connections: 272 
server accepts handled requests
 65274467 65274255 150927366 
Reading: 47 Writing: 68 Waiting: 157 


Нас интересуют первое число в третьей строке (число обработанных коннектов) и третье (число запросов). Парсить будем несложным PHP-скриптом:

#!/usr/bin/php



Скрипт нужно сохранить в файл и сделать исполняемым. Заодно нужно проверить путь к интерпритатору PHP в первой строке (он может отличаться в зависимости от системы). ДЛя рисования графика в конфигурацию MRTG нужно добавить примерно такие строки:

Target[nginx]: `/var/www/mrtg/scripts/nginx.php frontend.domain.com`
MaxBytes[nginx]: 1
Title[nginx]: nginx statistics
PageTop[nginx]: 

nginx statistics

AbsMax[nginx]: 1250000 Options[nginx]: integer,nopercent,nobanner,growright,dorelpercent YLegend[nginx]: per second ShortLegend[nginx]: per second Legend1[nginx]: Connections per second Legend2[nginx]: Requests per second


В итоге будет нарисован вот такой график:

Здесь синяя линия - число обрабатываемых ежесекундно запросов. Зелёная - количество соединений. Жёлтая - отношения числа соединений к числу запросов. Она позволяет косвенно оценить эффективность использования tcp-соединений (чем ниже линия тем лучше).

На этом всё. Приятной работы!

Оригинал




Вас также может заинтересовать:

Мониторинг Sphinx с помощью MRTG
Nginx с Виндой и ... (или установка Nginx под Windows в качестве сервиса)
Уязвимость в nginx — nginx security advisory (CVE-2013-4547)
Мониторинг количества активных хостов в сети
Настройка параметров файловой системы с помощью tune2fs
Оптимизация MySQL запросов с помощью Neor Profile SQL