Мониторинг nginx
Содержание
Мониторинг nginx#
Attention
Эта статья — января 2021 года. Вероятно, ситуация поменялась, по состоянию на ноябрь 2022-го я не вижу в репозитории и документации плагина python.d для nginx (есть для nginx Plus, но он не годится для обычного nginx).
Как и предполагал ранее, имеет смысл перейти на использование плагинов nginx и weblog на go.d.
Статью оставлю в текущем виде для понимания общего порядка действий (специфика для go.d может отличаться). В частности, оставлю более не актуальные ссылки на документацию плагинов.
Note
Мы в настоящее время используем плагины python.d.
Есть также аналогичные плагины на go.d.
Мне не удалось найти информацию по сравнению производительности, стоит ли переключаться с плагинов python.d на плагины go.d.
Модуль nginx (статистика коннектов к серверу в целом)#
Attention
Как пояснил выше, ссылка нерабочая. Оставляю в архивных целях.
https://learn.netdata.cloud/docs/agent/collectors/python.d.plugin/nginx/
Подсказки из /etc/netdata/nginx.conf:
# You must have ngx_http_stub_status_module configured on your nginx server
# for this plugin to work. The following is an example config.
# It must be located inside a server { } block.
#
# location /stub_status {
# stub_status;
# # Security: Only allow access from the IP below.
# allow 192.168.1.200;
# # Deny anyone else
# deny all;
# }
Настройка nginx#
sudo vim /etc/nginx/conf.d/default.conf
# Добавляем в блок server
location /21QSv6cP_nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
Перезапускаем nginx:
sudo nginx -t
sudo nginx -s reload
Настройка модуля nginx для Netdata:#
Hint
В /etc/netdata/conf.d/[module] (по умолчанию) хранится дефолтная
конфигурация. Менять её не следует (она будет перезаписана при обновлении).
Все изменения нужно хранить в /etc/netdata/[module],
где module — название модуля или плагина Netdata.
Использование edit-config автоматизирует процесс хранения изменений
конфигурации отдельно от конфигурации по умолчанию, но то же самое можно
делать и вручную.
Официальный способ (если Netdata установлена скриптом с официального сайта, при установке из пакета в настоящее время не работает):
cd /etc/netdata
sudo ./edit-config python.d/nginx.conf
При установке из пакета в настоящее время edit-config не работает, делаем то
же самое вручную:
# Нужно выполнить только один раз,
# при установке/настройке первого плагина python.d
sudo mkdir /etc/netdata/python.d
# Нужно выполнить только один раз,
# при первичной настройке плагина nginx
# Не стоит перезаписывать, если файл уже существует!
sudo cp -nv /etc/netdata/conf.d/python.d/nginx.conf \
/etc/netdata/python.d/nginx.conf
sudo vim /etc/netdata/python.d/nginx.conf
Добавляем:
localipv4_default:
name : 'local'
url : 'http://127.0.0.1/21QSv6cP_nginx_status'
Перезапускаем Netdata, чтобы применить изменения:
sudo systemctl restart netdata.service
Дебаг плагина python.d/nginx:#
/usr/libexec/netdata/plugins.d/python.d.plugin \
nginx trace debug
See also
Модуль web_log (анализ логов — для каждого сайта в отдельности)#
Attention
Как пояснил выше, ссылка нерабочая. Оставляю в архивных целях.
https://learn.netdata.cloud/docs/agent/collectors/python.d.plugin/web_log/
Настройка доступа к файлам логов nginx#
Требуется, когда демон Netdata запущен от имени пользователя с ограниченными правами, в частности, при установке из пакета EPEL.
Нужно:
либо включить пользователя
netdataв группу, которой принадлежат файлы логовnginx:# если логи nginx принадлежат группе nginx sudo usermod -aG nginx netdataлибо дать всем доступ на чтение к логам
nginx:sudo chmod 644 /var/log/nginx/*.log sudo for my_dir in /srv/sites/*; \ do chmod -v 644 ${my_dir}/logs/*.log; \ done
Во втором случае также нужно изменить права на файлы логов в конфигурации logrotate:
sudo vim /etc/logrotate.d/nginx sudo vim /etc/logrotate.d/nginx-sitefactory
— меняем строку
create 640 nginx admнаcreate 644 nginx adm.
Настройка плагина web_log для Netdata#
Hint
В /etc/netdata/conf.d/[module] (по умолчанию) хранится дефолтная
конфигурация. Менять её не следует (она будет перезаписана при обновлении).
Все изменения нужно хранить в /etc/netdata/[module],
где module — название модуля или плагина Netdata.
Использование edit-config автоматизирует процесс хранения изменений
конфигурации отдельно от конфигурации по умолчанию, но то же самое можно
делать и вручную.
Официальный способ (если Netdata установлена скриптом с официального сайта, при установке из пакета в настоящее время не работает):
cd /etc/netdata
sudo ./edit-config python.d/web_log.conf
При установке из пакета в настоящее время edit-config не работает, делаем то
же самое вручную:
# Нужно выполнить только один раз,
# при установке/настройке первого плагина python.d
sudo mkdir /etc/netdata/python.d
# Нужно выполнить только один раз,
# при первичной настройке плагина web_log
# Не стоит перезаписывать, если файл уже существует!
sudo cp -nv /etc/netdata/conf.d/python.d/web_log.conf \
/etc/netdata/python.d/web_log.conf
sudo vim /etc/netdata/python.d/web_log.conf
Добавляем следующий блок (для ПРОДа):
# -------------------------------------------------------
# Alexey 2021-01-18: Manual config
# -------------------------------------------------------
nginx_log_otkrytka:
name: 'nginx_otkrytka'
path: '/srv/sites/otkrytka.appworks.ru/logs/access.log'
nginx_log_appindex:
name: 'nginx_appindex'
path: '/srv/sites/appindex.ru/logs/access.log'
nginx_log_apppress:
name: 'nginx_apppress'
path: '/srv/sites/press.appworks.ru/logs/access.log'
nginx_log_vozvratnalogov:
name: 'nginx_vozvratnalogov'
path: '/srv/sites/vozvratnalogov.online/logs/access.log'
— я добавил перед
# -------------------------------------------------------
# AUTO-DETECTION JOBS
но можно и в конец файла.
Перезапускаем Netdata, чтобы применить изменения:
sudo systemctl restart netdata.service
Дебаг плагина python.d/web_log:#
/usr/libexec/netdata/plugins.d/python.d.plugin \
web_log trace debug
See also