```{index} nginx, внешние ссылки ``` # Мониторинг nginx ```{attention} Эта статья --- января 2021 года. Вероятно, ситуация поменялась, по состоянию на ноябрь 2022-го я не вижу в репозитории и документации плагина python.d для nginx (есть [для nginx Plus](https://learn.netdata.cloud/docs/agent/collectors/python.d.plugin/nginx_plus), но он не годится для обычного nginx). Как и предполагал ранее, имеет смысл перейти на использование плагинов [nginx](https://learn.netdata.cloud/docs/agent/collectors/go.d.plugin/modules/nginx) и [weblog](https://learn.netdata.cloud/docs/agent/collectors/go.d.plugin/modules/weblog) на go.d. Статью оставлю в текущем виде для понимания общего порядка действий (специфика для go.d может отличаться). В частности, оставлю более не актуальные ссылки на документацию плагинов. ``` ```{note} Мы в настоящее время используем [плагины python.d](https://learn.netdata.cloud/docs/agent/collectors/python.d.plugin/). Есть также аналогичные [плагины на go.d](https://learn.netdata.cloud/docs/agent/collectors/go.d.plugin/). Мне не удалось найти информацию по сравнению производительности, стоит ли переключаться с плагинов python.d на плагины go.d. ``` ## Модуль nginx (статистика коннектов к серверу в целом) ```{attention} Как пояснил выше, ссылка нерабочая. Оставляю в архивных целях. ``` `https://learn.netdata.cloud/docs/agent/collectors/python.d.plugin/nginx/` Подсказки из `/etc/netdata/nginx.conf`: ```bash # 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 ```bash 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: ```bash 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` не работает, делаем то же самое вручную: ```bash # Нужно выполнить только один раз, # при установке/настройке первого плагина 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 ``` Добавляем: ```yaml localipv4_default: name : 'local' url : 'http://127.0.0.1/21QSv6cP_nginx_status' ``` Перезапускаем Netdata, чтобы применить изменения: ```bash sudo systemctl restart netdata.service ``` ### Дебаг плагина python.d/nginx: ``` /usr/libexec/netdata/plugins.d/python.d.plugin \ nginx trace debug ``` ```{seealso} {doc}`/netdata/plugins-debug` ``` ## Модуль web_log (анализ логов --- для каждого сайта в отдельности) ```{attention} Как пояснил выше, ссылка нерабочая. Оставляю в архивных целях. ``` `https://learn.netdata.cloud/docs/agent/collectors/python.d.plugin/web_log/` ### Настройка доступа к файлам логов nginx Требуется, когда демон Netdata запущен от имени пользователя с ограниченными правами, в частности, при установке из пакета EPEL. Нужно: - либо включить пользователя `netdata` в группу, которой принадлежат файлы логов `nginx`: ```bash # если логи nginx принадлежат группе nginx sudo usermod -aG nginx netdata ``` - либо дать всем доступ на чтение к логам `nginx`: ```bash sudo chmod 644 /var/log/nginx/*.log sudo for my_dir in /srv/sites/*; \ do chmod -v 644 ${my_dir}/logs/*.log; \ done ``` Во втором случае также нужно изменить права на файлы логов в конфигурации logrotate: ```bash 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` не работает, делаем то же самое вручную: ```bash # Нужно выполнить только один раз, # при установке/настройке первого плагина 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 ``` Добавляем следующий блок (для ПРОДа): ```yaml # ------------------------------------------------------- # 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' ``` --- я добавил перед ```yaml # ------------------------------------------------------- # AUTO-DETECTION JOBS ``` но можно и в конец файла. Перезапускаем Netdata, чтобы применить изменения: ```bash sudo systemctl restart netdata.service ``` ### Дебаг плагина python.d/web_log: ```bash /usr/libexec/netdata/plugins.d/python.d.plugin \ web_log trace debug ``` ```{seealso} {doc}`/netdata/plugins-debug` ```