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ć?
Serwer działa na CentOS 5.3
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.
apt install libwww-perl time
na węzłach Munin za logi stwierdzające problemy zUse of uninitialized value $LWP::VERSION
wtyczkami 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-node
abyhttp://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:
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):
Jeśli zobaczysz następujące dane wyjściowe, możesz zacząć.
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
ssh
przejść na serwer i uruchomić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ę:
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: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:
(Zauważ, że zastąpiłem również
listen: 127.0.0.1
port 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
(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
LubLWP::VERSION
), w twoim systemie brakuje pakietu wymaganego przeznginx_status
wtyczkę.W systemie Debian / Ubuntu uruchom
Na CentOS
Po tym przetestuj wtyczkę ponownie za pomocą
munin-run
. Oczekiwany wynik (liczby będą różne):źródło
/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:
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:
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?
źródło
Kluczową sprawą jest adres URL w konfiguracji Munina.
Będziesz potrzebować
Uwaga
Nie
źródło
Zainstaluj libwww-perl, a następnie uruchom polecenie,
munin-run nginx_status
aby zobaczyć statystyki.Uruchom ponownie usługę muni-node.
źródło