Zabbix и Munin для сбора статистики Nginx

Ігор Грегорченко

Профилирование и мониторинг крайне важны для стабильной работы высоконагруженной системы. Кроме логов ошибок и запросов, Nginx имеет собственный модуль статистики [https://nginx.org/ru/docs/http/ngx_http_stub_status_module.html ngx_http_stub_status_module] с базовыми данными о работе веб-сервера.

Модуль по умолчанию не входит в сборку системы, так что Nginx придется пересобрать со строчкой –with-http_stub_status_module.

Затем необходимо включить статистику в файле конфигурации /etc/nginx/nginx.conf, дополнив блок server следующими параметрами:

location /nginx_status {

stub_status on;

access_log off;

**allow 127.0.0.1;**

deny all;

}
## Можно просмотреть только локально

Учтите, что если необходимо просмотреть метрики из интернета, то нужно вписать свой IP.

При подключении по адресу http://somesite.com/nginx_status будет доступна следующая статистика:

  • Active connections – число активных соединений;
  • Accepts – суммарное количество принятых соединений клиентов;
  • Handled – суммарное число обработанных соединений, если отличается от accepts, до достигнут какой-то системный лимит;
  • Requests – суммарное число клиентских запросов;
  • Reading – число соединений, в которых веб-сервер читает заголовки в данный момент;
  • Writing – число соединений, в которых веб-сервер отвечает клиенту в данный момент;
  • Waiting – текущее число неактивных соединений, ожидающих запроса.

Munin для сбора статистики

Встроенный модуль статистики Nginx подходит разве что для одноразового анализа проблем. Так что для постоянного отслеживания данных этот модуль лучше использовать в паре с системой мониторинга, например Munin.

После установки и начальной настройки, Munin нужно подключить к Nginx. Для этого необходимо отредактировать файл конфигурации веб-сервера, добавив:

location /munin {

alias /var/www/html/munin/;

allow 127.0.0.1;

**allow XX.XX.XX.XX;**

deny all;

index index.php index.html index.htm;

location ~* .(png|jpg|jpeg|gif|ico)$ {

}

}
## Добавьте свой IP, если нужно подключаться из “мира”

Или же можно создать отдельный файл конфигурации /etc/nginx/conf.d/munin.conf со следующим содержанием:

listen 80 default_server;

access_log off;

server_name _;

server_name_in_redirect off;

root /var/www/html;

location /munin {

alias /var/www/html/munin/;

allow 127.0.0.1;

allow XX.XX.XX.XX;

deny all;

index index.php index.html index.htm;

location ~* .(png|jpg|jpeg|gif|ico)$ {

}

}

location /nginx_status {

stub_status on;

access_log off;

allow 127.0.0.1;

deny all;

}

}
## В этом случае nginx_status можно убрать из основного файла конфигурации

Не забудьте перезагрузить Nginx и проверить конфигурацию. После можно проверить, что Munin видит веб-сервер:

# **munin-node-configure --suggest | grep nginx**

nginx_request | no | yes

nginx_status | no | yes
## Указывает, что плагины отключены, но модуль статистики подключен

Теперь подключим плагины для отрисовки графиков по метрикам Nginx:

ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/ -v

ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/ -v
## Создает символьные линки к плагинам

Встроенные в Munin плагины обеспечивают информацию о статусе сервера и количестве запросов. Дополнительно можно подключить [https://github.com/perusio/nginx-munin/ неофициальные плагины] для расширения функционала:

wget https://github.com/perusio/nginx-munin/archive/master.zip

unzip master.zip

cd nginx-munin-master/

cp nginx_connection_request nginx_memory /etc/munin/plugins/ -fv
## Закачка и размещение дополнительных плагинов мониторинга соединений/запросов и RAM

Не забудьте перезагрузить munin-node.

Графики

Munin выводит статистику в виде графиков, которые позволят быстро оценить масштаб проблемы. К примеру, нужно проверить конфигурацию сервера, если большое заметили большое количество ошибок HTTP:

А такой график говорит о том, что стоит проверить работу системы кэширования:

Использование Zabbix

Для парсинга статистики Nginx можно воспользоваться системой для мониторинга Zabbix. Если вы уже используете Zabbix, то подключение метрик веб-сервера не составит труда. Сначала нужно создать директорию для скриптов и положить в нее скрипт для парсинга:

mkdir /etc/zabbix/scripts/

vim /etc/zabbix/scripts/nginx-stats.sh

#!/bin/bash

### OPTIONS VERIFICATION

if [[ -z “$1” || -z “$2” || -z “$3″ ]]; then

exit 1

fi

##### PARAMETERS #####

RESERVED=”$1″

METRIC=”$2″

STATSURL=”$3″

#

CURL=”/usr/bin/curl”

TTLCACHE=”55″

FILECACHE=”/tmp/zabbix.nginx.`echo $STATSURL | md5sum | cut -d” ” -f1`.cache”

TIMENOW=`date ‘+%s’`

##### RUN #####

if [ -s “$FILECACHE” ]; then

TIMECACHE=`stat -c”%Z” “$FILECACHE”`

else

TIMECACHE=0

fi

if [ “$(($TIMENOW – $TIMECACHE))” -gt “$TTLCACHE” ]; then

echo “” >> $FILECACHE # !!!

DATACACHE=`$CURL –insecure -s “$STATSURL”` || exit 1

echo “$DATACACHE” > $FILECACHE # !!!

fi

if [ “$METRIC” = “active” ]; then

cat $FILECACHE | grep “Active connections” | cut -d’:’ -f2

fi

if [ “$METRIC” = “accepts” ]; then

cat $FILECACHE | sed -n ‘3p’ | cut -d” ” -f2

fi

if [ “$METRIC” = “handled” ]; then

cat $FILECACHE | sed -n ‘3p’ | cut -d” ” -f3

fi

if [ “$METRIC” = “requests” ]; then

cat $FILECACHE | sed -n ‘3p’ | cut -d” ” -f4

fi

if [ “$METRIC” = “reading” ]; then

cat $FILECACHE | grep “Reading” | cut -d’:’ -f2 | cut -d’ ‘ -f2

fi

if [ “$METRIC” = “writing” ]; then

cat $FILECACHE | grep “Writing” | cut -d’:’ -f3 | cut -d’ ‘ -f2

fi

if [ “$METRIC” = “waiting” ]; then

cat $FILECACHE | grep “Waiting” | cut -d’:’ -f4 | cut -d’ ‘ -f2

fi

#

exit 0
## Проверка статуса и сбор статистики из Nginx

Обратите внимание, что при проверке метрик используется кэширование для уменьшения количества запросов.

Не забудьте назначить права доступа:

chown zabbix:zabbix -R /etc/zabbix/scripts/

chmod 750 /etc/zabbix/scripts/

chmod 700 /etc/zabbix/scripts/nginx-stats.sh
## Доступ к директории скриптов из мира запрещен

Осталось отредактировать параметры агента Zabbix в файле /etc/zabbix/zabbix_agentd.conf:

UserParameter=nginx[*],/etc/zabbix/scripts/nginx-stats.sh "none" $1 $2
## Указывает скрипт для парсинга nginx-stats.sh

После перезапуска агента, нужно создать шаблон в веб-интерфейсе Zabbix для прорисовки нужных графиков:

Самое главное

Мониторинг работы Nginx при помощи Munin или Zabbix поможет быстро реагировать на проблемы и получать информацию об ошибках в виде наглядных графиков или уведомлений.

Останні статті

Всегда перед глазами: 15 лучших тем VS Code на 2026 год

Visual Code от Microsoft, вероятно, один из самых популярных редакторов кода. Разработчики любят его за…

22.02.2026

Киберпанк по-японски: 9 лучших аниме в жанре «технологии нас погубят»

Япония сама по себе — сплошной киберпанк. Это заметил даже культовый писатель жанра Уильям Гибсон,…

21.02.2026

Не просто коробка с бантом. Как оригинально подарить гаджет: 5 незатратных способов

Сам по себе телефон Айфон 17 Про Макс – отличный подарок. У него красивая заводская…

12.02.2026

Лучшие криптобиржи для криптозаймов в 2025 году: где лучше брать кредит под крипту?

На фоне роста спроса на ликвидность в бычьем рынке 2025 года, криптозаймы снова выходят на…

09.07.2025

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024