12 votes

Le plugin Munin de Nginx ne montre aucune donnée

J'aimerais surveiller les statistiques de NGinx par le biais de Munin, mais les plugins Nginx n'affichent aucune donnée. Est-il possible de diagnostiquer pourquoi un seul des plugins Munin Nginx semble fonctionner ?

nginx munin

Le serveur fonctionne sous CentOS 5.3

16voto

Tom Feiner Points 16168

Les plugins nginx s'appuient sur l'URL suivante pour obtenir les informations d'état :

http://127.0.0.1/nginx_status

Habituellement, nginx n'a pas cette URL configurée pour afficher les données d'état.

D'après la documentation des plugins, je vois que nginx doit être configuré pour afficher les données d'état dans une URL spécifique.

Vous devez activer le statut de nginx en ajoutant les lignes suivantes à la configuration du site :

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

N'oubliez pas de redémarrer le serveur après avoir ajouté cette configuration, et assurez-vous que l'URL stus renvoie les données d'état.

Pour la documentation complète de chaque plugin, vous pouvez exécuter :

munindoc nginx_request

J'espère que cela vous aidera.

1 votes

Remarque : sous Ubuntu 16.04, activer nginx comme indiqué ici n'était pas suffisant dans mon cas. En outre, j'ai dû apt install libwww-perl time sur les nœuds de munin pour son journal indiquant les problèmes de Use of uninitialized value $LWP::VERSION sur les plugins nginx.

0 votes

Autre remarque : depuis que l'IPv6 est pris en charge par les serveurs, l'URL par défaut des plugins nginx_* qui utilisent http://localhost/ pourrait préférer IPv6 et donc ne pas correspondre à la configuration de nginx qui autorise uniquement IPv4 localhost. En fixant l'URL dans /etc/munin/plugin-conf.d/munin-node a http://127.0.0.1/nginx_status a fini par faire fonctionner le plugin.

5voto

badew Points 51

D'après mon expérience, ces plugins ne fonctionnent probablement pas en raison d'une mauvaise configuration de nginx. Voici une liste de ce qu'il faut faire dans ce cas :

1. Vérifiez l'installation de nginx

Nginx doit être compilé avec HttpStubStatusModule module. Vous pouvez le vérifier en exécutant la commande suivante (sous sudo ou root) :

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

Si vous voyez la sortie suivante, vous pouvez continuer.

with-http_stub_status_module

Sinon, vous devez recompiler nginx avec le module requis activé ou l'installer à partir d'une source différente (dans mon cas, le dépôt Debian par défaut avait la bonne version).

2. Vérifiez la configuration de nginx

Je suppose que vous avez placé et activé l'option configuration requise . Pour voir si cela fonctionne, vous pouvez ssh sur votre serveur et exécutez

wget http://localhost/nginx_status

Si vous n'obtenez aucune erreur ici, alors le problème est la configuration du plugin. Si le serveur renvoie une erreur ici, vous pouvez déboguer en modifiant la configuration :

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

Après cela, dans le fichier /var/log/nginx/status.error.log vous pouvez voir la raison exacte pour laquelle le serveur a retourné une erreur :

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

Dans mon cas (comme vous pouvez le voir dans le journal), le problème était le suivant client: ::1 tandis que la configuration ne permettait que l'accès à partir de 127.0.0.1

Pour résoudre ce problème, vous pouvez soit suivre suggestion de cepharum ou modifier la configuration de l'hôte virtuel :

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

(Remarquez que j'ai également remplacé listen: 127.0.0.1 avec le port 80 (ipv4+ipv6) car le premier ne fonctionnait pas non plus)

3. Vérifier la configuration du système et les dépendances

Pour vérifier si le plugin lui-même fonctionne, exécutez

munin-run nginx_status

(notez que le plugin doit être "activé" - un lien symbolique doit être présent à l'adresse suivante /etc/munin/plugins - lire le manuel si non)

Si vous obtenez des erreurs avec LWP bibliothèque (par exemple LWP::UserAgent o LWP::VERSION ), il manque à votre système un paquetage requis par nginx_status plugin.

Sur Debian / Ubuntu, exécutez

apt install libwww-perl

Sur CentOS

yum install perl-libwww-perl

Après cela, testez à nouveau le plugin en utilisant munin-run . Le résultat attendu (les chiffres seront différents) :

total.value 1
reading.value 0
writing.value 1
waiting.value 0

2voto

CarpeNoctem Points 2407

Possiblement utile :

cd /etc/munin/plugins
munin-run PLUGINNAME

De plus, utilisez l'option debug de munin-run.

Vérifiez que le fichier du plugin ne contient pas de chemins codés en dur et qu'ils sont corrects pour votre système :

grep '/' PLUGINNAME

Le plugin nginx peut dépendre de la compilation de Nginx avec certains modules ou de la sortie du journal dans un certain format. Existe-t-il une page de documentation pour les plugins ?

2voto

Hellcat8 Points 301

L'élément clé est l'url dans la configuration de munin.

Vous aurez besoin de

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

Note

nginx_status

Non

nginx-status

0voto

Jake Points 763

Installer libwww-perl puis exécutez la commande munin-run nginx_status pour voir les statistiques.
Redémarrez le service muni-node.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X