Risposte:
I plug-in nginx si basano sul seguente URL per ottenere le informazioni sullo stato:
http://127.0.0.1/nginx_status
Di solito, nginx non ha questo URL configurato per mostrare i dati di stato.
Dalla documentazione dei plugin, vedo che nginx deve essere configurato per mostrare i dati di stato in un URL specifico.
È necessario abilitare lo stato nginx aggiungendo le seguenti righe alla configurazione del sito:
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;
}
}
Non dimenticare di riavviare il server dopo aver aggiunto questa configurazione e assicurarsi che l'URL stus restituisca i dati di stato.
Per la documentazione completa di ciascun plug-in, è possibile eseguire:
munindoc nginx_request
Spero che sia di aiuto.
http://localhost/
potrebbe preferire IPv6 e quindi non corrisponderà alla configurazione nginx che consente solo l'host locale IPv4. Risolvendo l'URL in /etc/munin/plugin-conf.d/munin-node
alla http://127.0.0.1/nginx_status
fine il plugin funzionava.
Nella mia esperienza, questi plugin probabilmente non funzionano a causa della configurazione errata di nginx. Ecco un elenco di cosa fare in questo caso:
Nginx deve essere compilato con il modulo HttpStubStatusModule . Puoi verificarlo eseguendo il comando seguente (sotto sudo o root):
nginx -V 2>&1 | grep -o with-http_stub_status_module
Se vedi l'output seguente, sei a posto.
with-http_stub_status_module
Altrimenti, devi ricompilare nginx con il modulo richiesto abilitato o installarlo da una fonte diversa (Nel mio caso, il repository Debian predefinito aveva la versione giusta).
Presumo che tu abbia inserito e abilitato la configurazione richiesta . Per vedere se funziona, è possibile ssh
al server ed eseguire
wget http://localhost/nginx_status
Se non ottieni errori qui, il problema è la configurazione del plug-in. Se il server restituisce un errore qui, è possibile eseguire il debug modificando la configurazione:
location /nginx_status {
stub_status on;
access_log off;
error_log /var/log/nginx/status.error.log;
allow 127.0.0.1;
deny all;
}
Successivamente, nel file /var/log/nginx/status.error.log
è possibile visualizzare il motivo esatto per cui il server ha restituito un errore:
[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", host: "localhost"
Nel mio caso (come puoi vedere dal registro) il problema era client: ::1
, mentre la configurazione consentiva l'accesso solo da127.0.0.1
Per risolvere il problema, puoi seguire il suggerimento di cepharum o modificare la configurazione dell'host virtuale:
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;
}
}
(Si noti che ho anche sostituito listen: 127.0.0.1
con la porta 80 (ipv4 + ipv6) perché anche il primo non funzionava)
Per verificare se il plugin stesso funziona, esegui
munin-run nginx_status
(nota che il plugin deve essere "acceso" - deve essere presente un link simbolico a /etc/munin/plugins
- leggi il manuale in caso contrario)
Se ricevi errori con la LWP
libreria (es. LWP::UserAgent
O LWP::VERSION
), nel tuo sistema manca un pacchetto richiesto dal nginx_status
plugin.
Su Debian / Ubuntu, esegui
apt install libwww-perl
Su CentOS
yum install perl-libwww-perl
Dopo di che prova di nuovo il plugin usando munin-run
. L'output previsto (i numeri saranno diversi):
total.value 1
reading.value 0
writing.value 1
waiting.value 0
/var/log/munin-update.log
(Service nginx_status on servername / 127.0.0.1: 4949 non ha restituito dati per l'attesa dell'etichetta), avrei potuto cercare per anni per scoprire che libwww-perl
mancava. Grazie mille per questa ampia risposta.
Forse utile:
cd /etc/munin/plugins
munin-run PLUGINNAME
Utilizzare inoltre l'opzione di debug per eseguire Munin.
Controlla il file del plugin per eventuali percorsi codificati e verifica che siano corretti per il tuo sistema:
grep '/' PLUGINNAME
Il plug-in nginx può fare affidamento sul fatto che Nginx sia compilato con determinati moduli o che registri l'output in un determinato formato. Esiste una pagina di documentazione per i plugin?
La cosa chiave è l'URL nella configurazione di Munin.
Avrai bisogno
[nginx*]
env.url http://localhost/nginx_status
Nota
nginx_status
Non
nginx-status
Installa libwww-perl, quindi esegui il comando munin-run nginx_status
per visualizzare le statistiche.
Riavviare il servizio muni-node.
apt install libwww-perl time
nodi munin per i suoi log che indicano problemi conUse of uninitialized value $LWP::VERSION
i plug-in nginx.