Il plugin Nginx Munin non mostra dati


9

Vorrei monitorare le statistiche di NGinx tramite Munin ma i plugin di Nginx non mostrano dati. È possibile diagnosticare perché solo uno dei plug-in Munin Nginx sembra funzionare?

nginx munin

Il server funziona su CentOS 5.3

Risposte:


14

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.


1
Nota a margine: l'esecuzione di Ubuntu 16.04 abilitando nginx come documentato qui non è stata sufficiente nel mio caso. Inoltre, ho dovuto utilizzare i apt install libwww-perl timenodi munin per i suoi log che indicano problemi con Use of uninitialized value $LWP::VERSIONi plug-in nginx.
Thomas Urban,

Un'altra nota a margine: dato che IPv6 è supportato oggi sui server, l'URL predefinito dei plug-in nginx_ * 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-nodealla http://127.0.0.1/nginx_statusfine il plugin funzionava.
Thomas Urban,

4

Nella mia esperienza, questi plugin probabilmente non funzionano a causa della configurazione errata di nginx. Ecco un elenco di cosa fare in questo caso:

1. Controllare l'installazione di nginx

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).

2. Controlla la configurazione di nginx

Presumo che tu abbia inserito e abilitato la configurazione richiesta . Per vedere se funziona, è possibile sshal 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.1con la porta 80 (ipv4 + ipv6) perché anche il primo non funzionava)

3. Controllare la configurazione del sistema e le dipendenze

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 LWPlibreria (es. LWP::UserAgentO LWP::VERSION), nel tuo sistema manca un pacchetto richiesto dal nginx_statusplugin.

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

Sulla base dei messaggi di errore in /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-perlmancava. Grazie mille per questa ampia risposta.
BurninLeo,

2

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?


2

La cosa chiave è l'URL nella configurazione di Munin.

Avrai bisogno

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

Nota

nginx_status

Non

nginx-status

0

Installa libwww-perl, quindi esegui il comando munin-run nginx_statusper visualizzare le statistiche.
Riavviare il servizio muni-node.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.