Odpowiedzi:
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.
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-node
aby http://127.0.0.1/nginx_status
ostatecznie uruchomić wtyczkę.
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:
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ę).
Zakładam, że umieściłeś i włączyłeś wymaganą konfigurację . Aby sprawdzić, czy działa, możesz ssh
przejść 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.log
moż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.1
port 80 (ipv4 + ipv6), ponieważ ten pierwszy również nie działał)
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 LWP
biblioteką (np. LWP::UserAgent
Lub LWP::VERSION
), w twoim systemie brakuje pakietu wymaganego przez nginx_status
wtyczkę.
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
/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-perl
brakujące dane. Wielkie dzięki za tę obszerną odpowiedź.
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?
Kluczową sprawą jest adres URL w konfiguracji Munina.
Będziesz potrzebować
[nginx*]
env.url http://localhost/nginx_status
Uwaga
nginx_status
Nie
nginx-status
Zainstaluj libwww-perl, a następnie uruchom polecenie, munin-run nginx_status
aby zobaczyć statystyki.
Uruchom ponownie usługę muni-node.
apt install libwww-perl time
na węzłach Munin za logi stwierdzające problemy zUse of uninitialized value $LWP::VERSION
wtyczkami nginx.