Réponses:
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.
De 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 l'état 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 t'aides.
http://localhost/
pourrait préférer IPv6 et va donc ne pas correspondre à la configuration nginx qui autorise IPv4 localhost uniquement. En corrigeant l'URL /etc/munin/plugin-conf.d/munin-node
pour http://127.0.0.1/nginx_status
finalement faire fonctionner le plugin.
D'après mon expérience, ces plugins ne fonctionnent probablement pas en raison d'une mauvaise configuration de nginx. Voici une courte liste de ce qu'il faut faire dans ce cas:
Nginx doit être compilé avec le module HttpStubStatusModule . 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 installer à partir d'une source différente (dans mon cas, le dépôt Debian par défaut avait la bonne version).
Je suppose que vous avez placé et activé la configuration requise . Pour voir si cela fonctionne, vous pouvez accéder ssh
à votre serveur et exécuter
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 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
que la configuration n'autorisait l'accès127.0.0.1
Pour résoudre le problème, vous pouvez suivre la 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;
}
}
(Notez que j'ai également remplacé listen: 127.0.0.1
par le port 80 (ipv4 + ipv6) car le premier ne fonctionnait pas non plus)
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 sur /etc/munin/plugins
- sinon lire le manuel )
Si vous obtenez des erreurs avec la LWP
bibliothèque (par exemple LWP::UserAgent
ou LWP::VERSION
), votre système manque un package requis par le 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 munin-run
. La sortie attendue (les nombres seront différents):
total.value 1
reading.value 0
writing.value 1
waiting.value 0
/var/log/munin-update.log
(Service nginx_status sur servername / 127.0.0.1: 4949 n'a renvoyé aucune donnée pour l'attente d'étiquette), j'aurais pu rechercher des années pour découvrir ce qui libwww-perl
manquait. Merci beaucoup pour cette réponse détaillée.
Peut-être utile:
cd /etc/munin/plugins
munin-run PLUGINNAME
Utilisez également l'option de débogage pour exécuter Munin.
Vérifiez le fichier du plugin pour tous les chemins codés en dur et vérifiez 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?
L'élément clé est l'URL dans la configuration de munin.
Tu auras besoin de
[nginx*]
env.url http://localhost/nginx_status
Remarque
nginx_status
ne pas
nginx-status
Installez libwww-perl puis exécutez la commande munin-run nginx_status
pour voir les statistiques.
Redémarrez le service Muni-node.
apt install libwww-perl time
sur les nœuds munin pour ses problèmes de journalisation avecUse of uninitialized value $LWP::VERSION
les plugins nginx.