Назад | Перейти на главную страницу

Плагин Nginx Munin не показывает данных

Я хотел бы отслеживать статистику 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. Вот краткий список того, что делать в этом случае:

1. Проверьте установку nginx.

Nginx должен быть скомпилирован с HttpStubStatusModule модуль. Вы можете проверить это, выполнив следующую команду (под sudo или root):

nginx -V 2>&1 | grep -o with-http_stub_status_module

Если вы видите следующий результат, можете продолжать.

with-http_stub_status_module

В противном случае вам придется перекомпилировать nginx с включенным требуемым модулем или установить его из другого источника (в моем случае в репозитории Debian по умолчанию была правильная версия).

2. Проверьте конфигурацию nginx.

Я предполагаю, что вы установили и включили необходимая конфигурация. Чтобы узнать, работает ли он, вы можете 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), потому что первый также не работал)

3. Проверьте конфигурацию системы и зависимости.

Чтобы проверить, работает ли сам плагин, запустите

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 чтобы увидеть статистику.
Перезапустите службу муни-узла.