Ответы:
Для получения информации о статусе плагины nginx используют следующий URL:
http://127.0.0.1/nginx_status
Обычно в nginx этот URL не настроен для отображения данных о состоянии.
Из документации плагинов я вижу, что nginx необходимо настроить для отображения данных о статусе в специальном URL.
Вам необходимо включить статус nginx, добавив следующие строки в конфигурацию сайта:
server {
listen 127.0.0.1;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
Не забудьте перезагрузить сервер после добавления этой конфигурации и убедиться, что stus URL возвращает данные о состоянии.
Для полной документации каждого плагина, вы можете запустить:
munindoc nginx_request
Надеюсь это поможет.
http://localhost/может предпочесть IPv6 и, следовательно, будет не соответствовать конфигурации nginx, которая разрешает только IPv4 localhost. Путем исправления URL, /etc/munin/plugin-conf.d/munin-nodeчтобы в http://127.0.0.1/nginx_statusконечном итоге плагин заработал.
По моему опыту, эти плагины, вероятно, не работают из-за неправильной конфигурации nginx. Вот краткий список того, что делать в этом случае:
Nginx должен быть скомпилирован с модулем HttpStubStatusModule . Вы можете проверить это, выполнив следующую команду (под sudo или root):
nginx -V 2>&1 | grep -o with-http_stub_status_module
Если вы видите следующий результат, вы можете идти вперед.
with-http_stub_status_module
В противном случае вам придется перекомпилировать nginx с включенным требуемым модулем или установить из другого источника (в моем случае репозиторий Debian по умолчанию имел правильную версию).
Я предполагаю, что вы установили и включили требуемый конфиг . Чтобы увидеть, работает ли он, вы можете sshна свой сервер и запустить
wget http://localhost/nginx_status
Если здесь нет ошибок, проблема в настройке плагина. Если сервер возвращает ошибку здесь, вы можете отладить, изменив конфигурацию:
location /nginx_status {
stub_status on;
access_log off;
error_log /var/log/nginx/status.error.log;
allow 127.0.0.1;
deny all;
}
После этого в файле /var/log/nginx/status.error.logвы можете увидеть точную причину, по которой сервер вернул ошибку:
[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", host: "localhost"
В моем случае (как вы можете видеть из журнала) проблема была client: ::1, в то время как конфигурация позволила доступ только из127.0.0.1
Чтобы решить эту проблему, вы можете либо следовать предложению cepharum, либо изменить конфигурацию виртуального хоста:
server {
listen 80;
listen [::]:80;
server_name localhost;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow ::1;
deny all;
}
}
(Обратите внимание, что я также заменил listen: 127.0.0.1на порт 80 (ipv4 + ipv6), потому что первый также не работал)
Чтобы проверить, работает ли сам плагин, запустите
munin-run nginx_status
(обратите внимание, что плагин должен быть «включен» - символическая ссылка должна присутствовать /etc/munin/plugins- читайте руководство, если нет)
Если вы получаете ошибки с LWPбиблиотекой (например, LWP::UserAgentили LWP::VERSION), в вашей системе отсутствует пакет, необходимый для nginx_statusплагина.
В Debian / Ubuntu запустите
apt install libwww-perl
На CentOS
yum install perl-libwww-perl
После этого снова протестируйте плагин, используя munin-run. Ожидаемый результат (цифры будут разными):
total.value 1
reading.value 0
writing.value 1
waiting.value 0
/var/log/munin-update.log(Служба nginx_status на имя_сервера / 127.0.0.1: 4949 не возвращала данных для ожидания метки), я мог искать годами, чтобы найти, что libwww-perlпропало. Большое спасибо за этот обширный ответ.
Возможно, полезно:
cd /etc/munin/plugins
munin-run PLUGINNAME
Дополнительно используйте опцию отладки munin-run.
Проверьте файл плагина на наличие жестко закодированных путей и убедитесь, что они соответствуют вашей системе:
grep '/' PLUGINNAME
Плагин nginx может полагаться на компиляцию Nginx с определенными модулями или вывод журнала в определенном формате. Есть ли страница документации для плагинов?
Ключевым является URL в конфиге munin.
Тебе понадобится
[nginx*]
env.url http://localhost/nginx_status
Запись
nginx_status
Не
nginx-status
Установите libwww-perl, затем запустите команду, munin-run nginx_statusчтобы увидеть статистику.
Перезапустите службу muni-node.
apt install libwww-perl timeподключиться к узлам munin из-за проблем сUse of uninitialized value $LWP::VERSIONподключаемыми модулями nginx.