Wtyczka Nginx Munin nie pokazuje danych

9

Chciałbym monitorować statystyki NGinx za pośrednictwem Munin, ale wtyczki Nginx nie pokazują danych. Czy można zdiagnozować, dlaczego tylko jedna z wtyczek Munin Nginx wydaje się działać?

Nginx Munin

Serwer działa na CentOS 5.3

Miko
źródło

Odpowiedzi:

14

Wtyczki nginx korzystają z następującego adresu URL, aby uzyskać informacje o stanie:

http://127.0.0.1/nginx_status

Zwykle nginx nie ma tego adresu URL skonfigurowanego do wyświetlania danych o stanie.

Z dokumentacji wtyczek widzę, że nginx musi być skonfigurowany do wyświetlania danych statusu w specjalnym adresie URL.

Musisz włączyć status nginx, dodając następujące wiersze do konfiguracji witryny:

 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;
       }
 }

Nie zapomnij zrestartować serwera po dodaniu tej konfiguracji i upewnij się, że stus URL zwraca dane statusu.

Aby uzyskać pełną dokumentację każdej wtyczki, możesz uruchomić:

munindoc nginx_request

Mam nadzieję że to pomoże.

Tom Feiner
źródło
1
Uwaga dodatkowa: Uruchomienie Ubuntu 16.04 z włączoną nginx, jak tu udokumentowano, nie było w moim przypadku wystarczające. Ponadto musiałem apt install libwww-perl timena węzłach Munin za logi stwierdzające problemy z Use of uninitialized value $LWP::VERSIONwtyczkami nginx.
Thomas Urban
Kolejna uwaga: ponieważ obecnie IPv6 jest obsługiwany na serwerach, domyślny adres URL wtyczek nginx_ * http://localhost/może preferować IPv6, a zatem niedopasuje konfiguracji nginx, która zezwala tylko na lokalnego hosta IPv4. Ustawiając adres URL, /etc/munin/plugin-conf.d/munin-nodeaby http://127.0.0.1/nginx_statusostatecznie uruchomić wtyczkę.
Thomas Urban
4

Z mojego doświadczenia wynika, że ​​te wtyczki prawdopodobnie nie działają z powodu błędnej konfiguracji nginx. Oto krótka lista czynności, które należy wykonać w tym przypadku:

1. Sprawdź instalację nginx

Nginx musi zostać skompilowany z modułem HttpStubStatusModule . Możesz to sprawdzić, uruchamiając następujące polecenie (w sudo lub root):

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

Jeśli zobaczysz następujące dane wyjściowe, możesz zacząć.

with-http_stub_status_module

W przeciwnym razie musisz ponownie skompilować nginx z włączonym wymaganym modułem lub zainstalować z innego źródła (w moim przypadku domyślne repozytorium Debiana miało odpowiednią wersję).

2. Sprawdź konfigurację nginx

Zakładam, że umieściłeś i włączyłeś wymaganą konfigurację . Aby sprawdzić, czy działa, możesz sshprzejść na serwer i uruchomić

wget http://localhost/nginx_status

Jeśli nie ma tu żadnych błędów, problemem jest konfiguracja wtyczki. Jeśli serwer zwróci tutaj błąd, możesz debugować, modyfikując konfigurację:

location /nginx_status {
    stub_status on;
    access_log   off;
    error_log    /var/log/nginx/status.error.log;
    allow 127.0.0.1;
    deny all;
}

Następnie w pliku /var/log/nginx/status.error.logmożna zobaczyć dokładny powód, dla którego serwer zwrócił błąd:

[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", host: "localhost"

W moim przypadku (jak widać z dziennika) problem polegał na tym client: ::1, że konfiguracja umożliwiała dostęp tylko z127.0.0.1

Aby rozwiązać problem, możesz zastosować się do sugestii cefarum lub zmodyfikować konfigurację hosta wirtualnego:

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;
        }
}

(Zauważ, że zastąpiłem również listen: 127.0.0.1port 80 (ipv4 + ipv6), ponieważ ten pierwszy również nie działał)

3. Sprawdź konfigurację systemu i zależności

Aby sprawdzić, czy sama wtyczka działa, uruchom

munin-run nginx_status

(zwróć uwagę, że wtyczka musi być „włączona” - musi być obecne dowiązanie symboliczne /etc/munin/plugins- przeczytaj instrukcję, jeśli nie)

Jeśli wystąpią błędy z LWPbiblioteką (np. LWP::UserAgentLub LWP::VERSION), w twoim systemie brakuje pakietu wymaganego przez nginx_statuswtyczkę.

W systemie Debian / Ubuntu uruchom

apt install libwww-perl

Na CentOS

yum install perl-libwww-perl

Po tym przetestuj wtyczkę ponownie za pomocą munin-run. Oczekiwany wynik (liczby będą różne):

total.value 1
reading.value 0
writing.value 1
waiting.value 0
zła
źródło
W oparciu o komunikaty o błędach w /var/log/munin-update.log(Usługa nginx_status na servername / 127.0.0.1: 4949 nie zwróciła żadnych danych do oczekiwania na etykietę), mogłem szukać lat, aby znaleźć libwww-perlbrakujące dane. Wielkie dzięki za tę obszerną odpowiedź.
BurninLeo
2

Prawdopodobnie pomocne:

cd /etc/munin/plugins
munin-run PLUGINNAME

Dodatkowo użyj opcji debugowania, aby uruchomić.

Sprawdź plik wtyczki pod kątem ścieżek zakodowanych na stałe i sprawdź, czy są one odpowiednie dla twojego systemu:

grep '/' PLUGINNAME

Wtyczka nginx może polegać na kompilacji Nginx z określonymi modułami lub logować dane wyjściowe w określonym formacie. Czy jest strona dokumentacji wtyczek?

CarpeNoctem
źródło
2

Kluczową sprawą jest adres URL w konfiguracji Munina.

Będziesz potrzebować

[nginx*]
env.url http://localhost/nginx_status

Uwaga

nginx_status

Nie

nginx-status
Tien Do Xuan
źródło
0

Zainstaluj libwww-perl, a następnie uruchom polecenie, munin-run nginx_statusaby zobaczyć statystyki.
Uruchom ponownie usługę muni-node.

Izunna Calvin DIke
źródło