Відповіді:
Для отримання інформації про стан плагіни 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;
}
}
Не забудьте перезапустити сервер після додавання цієї конфігурації та переконайтеся, що URL-адреса stus повертає дані про стан.
Для повної документації кожного плагіна ви можете запустити:
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
Додатково використовуйте параметр налагодження для запуску файлів.
Перевірте файл плагінів на наявність жорстко закодованих шляхів і переконайтеся, що вони правильні для вашої системи:
grep '/' PLUGINNAME
Плагін nginx може покладатися на компіляцію Nginx з певними модулями або виведення журналу у певному форматі. Чи є сторінка документації для плагінів?
Ключова річ - URL-адреса в конфігурації munin.
Ви будете потребувати
[nginx*]
env.url http://localhost/nginx_status
Примітка
nginx_status
Ні
nginx-status
Встановіть libwww-perl, після чого запустіть команду, munin-run nginx_status
щоб побачити статистику.
Перезавантажте сервіс муні-вузлів.
apt install libwww-perl time
на munin-вузлах для його журналу викладати проблеми зUse of uninitialized value $LWP::VERSION
nginx плагінами.