Я хотел бы отслеживать статистику NGinx через Munin, но плагины Nginx не показывают данных. Можно ли определить, почему работает только один из плагинов munin nginx?
Сервер работает на CentOS 5.3.
Плагины 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
Надеюсь это поможет.
По моему опыту, эти плагины, скорее всего, не работают из-за неправильной конфигурации 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
Возможно полезно:
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
чтобы увидеть статистику.
Перезапустите службу муни-узла.