Профилирование и мониторинг крайне важны для стабильной работы высоконагруженной системы. Кроме логов ошибок и запросов, 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 будет доступна следующая статистика:
Встроенный модуль статистики 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:
А такой график говорит о том, что стоит проверить работу системы кэширования:
Для парсинга статистики 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 поможет быстро реагировать на проблемы и получать информацию об ошибках в виде наглядных графиков или уведомлений.
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…