12 votes

Le plugin Nginx Munin ne montre pas de données

Je voudrais surveiller les statistiques de NGinx à travers Munin mais les plugins Nginx ne montrent pas de données. Est-il possible de diagnostiquer pourquoi seulement l'un des plugins munin nginx semble fonctionner?

nginx munin

Le serveur fonctionne sous CentOS 5.3

16voto

Tom Feiner Points 16168

Les plugins nginx reposent sur l'URL suivante pour obtenir les informations de statut:

http://127.0.0.1/nginx_status

En général, nginx n'a pas cette URL configurée pour afficher les données de statut.

D'après la documentation des plugins, je vois qu'il est nécessaire de configurer nginx pour afficher les données de statut sur une URL spécifique.

Vous devez activer le statut 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 de statut retourne les données de statut.

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

munindoc nginx_request

J'espère que cela vous aidera.

1 votes

Side note: Exécuter Ubuntu 16.04 en activant nginx tel que documenté ici ne suffisait pas dans mon cas. En plus, j'ai dû apt install libwww-perl time sur les nœuds munin pour résoudre ses problèmes de journalisation avec Utilisation de la valeur non initialisée $LWP::VERSION sur les plugins nginx.

0 votes

Un autre point à noter : Puisque IPv6 est pris en charge sur les serveurs actuels, l'URL par défaut des plugins nginx_* utilisant http://localhost/ pourrait préférer IPv6 et donc ne pas correspondre à la configuration nginx qui n'autorise que localhost IPv4. En corrigeant l'URL dans /etc/munin/plugin-conf.d/munin-node en http://127.0.0.1/nginx_status, le plugin a finalement fonctionné.

5voto

badew Points 51

Dans 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érifier l'installation de nginx

Nginx doit être compilé avec le module HttpStubStatusModule. Vous pouvez vérifier cela 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érifier la configuration de nginx

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

wget http://localhost/nginx_status

S'il n'y a pas d'erreurs 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 renvoyé 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 client: ::1, tandis que la configuration autorisait uniquement l'accès depuis 127.0.0.1

Pour résoudre le problème, vous pouvez suivre la suggestion de cepharum ou modifier la configuration du virtual host :

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 par le port 80 (ipv4+ipv6) car le précédent 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 à /etc/munin/plugins - lisez le manuel si ce n'est pas le cas)

Si vous obtenez des erreurs avec la bibliothèque LWP (par exemple LWP::UserAgent ou LWP::VERSION), votre système manque d'un package requis par le plugin nginx_status.

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. La sortie attendue (les chiffres seront différents) :

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

0 votes

Basé sur les messages d'erreur dans /var/log/munin-update.log (Service nginx_status sur servername/127.0.0.1:4949 n'a renvoyé aucune donnée pour l'étiquette waiting), j'aurais pu chercher pendant des années pour découvrir que libwww-perl était manquant. Merci beaucoup pour cette réponse détaillée.

2voto

CarpeNoctem Points 2407

Peut-être utile :

cd /etc/munin/plugins
munin-run PLUGINNAME

De plus, utilisez l'option de débogage pour munin-run.

Vérifiez le fichier du plugin pour tout chemin en dur et assurez-vous qu'ils sont corrects pour votre système :

grep '/' PLUGINNAME

Le plugin nginx peut dépendre du fait que Nginx soit compilé avec certains modules ou que la sortie des journaux soit dans un format spécifique. Y a-t-il une page de documentation pour les plugins ?

2voto

Hellcat8 Points 301

La clé est l'URL dans la configuration munin.

Vous aurez besoin de

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

Notez

nginx_status

Ne pas

nginx-status

0voto

Jake Points 763

Installez 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