Ответы:
Для получения информации о статусе плагины 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.