Antworten:
Die Nginx-Plugins verwenden die folgende URL, um die Statusinformationen abzurufen:
http://127.0.0.1/nginx_status
Normalerweise ist diese URL für nginx nicht so konfiguriert, dass Statusdaten angezeigt werden.
Aus der Dokumentation der Plugins geht hervor, dass nginx so konfiguriert werden muss, dass Statusdaten in einer bestimmten URL angezeigt werden.
Sie müssen den Nginx-Status aktivieren, indem Sie der Konfiguration der Site die folgenden Zeilen hinzufügen:
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;
}
}
Vergessen Sie nicht, den Server nach dem Hinzufügen dieser Konfiguration neu zu starten, und stellen Sie sicher, dass die Stus-URL die Statusdaten zurückgibt.
Für die vollständige Dokumentation jedes Plugins können Sie Folgendes ausführen:
munindoc nginx_request
Hoffe das hilft.
http://localhost/
bevorzugt die Standard-URL der verwendeten nginx_ * -Plugins möglicherweise IPv6 und stimmt daher nicht mit der nginx-Konfiguration überein, die nur IPv4 localhost zulässt . Durch die Fixierung URL in /etc/munin/plugin-conf.d/munin-node
bis http://127.0.0.1/nginx_status
schließlich das Plugin Arbeits gemacht.
Nach meiner Erfahrung funktionieren diese Plugins aufgrund einer falschen Konfiguration von Nginx wahrscheinlich nicht. Hier ist eine kurze Liste, was in diesem Fall zu tun ist:
Nginx muss mit dem HttpStubStatusModule- Modul kompiliert werden. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen (unter sudo oder root):
nginx -V 2>&1 | grep -o with-http_stub_status_module
Wenn Sie die folgende Ausgabe sehen, können Sie fortfahren.
with-http_stub_status_module
Andernfalls müssen Sie nginx mit aktiviertem erforderlichen Modul neu kompilieren oder von einer anderen Quelle installieren (in meinem Fall hatte das Standard-Debian-Repo die richtige Version).
Ich gehe davon aus, dass Sie die erforderliche Konfiguration platziert und aktiviert haben . Um zu sehen, ob es funktioniert, können Sie ssh
zu Ihrem Server und ausführen
wget http://localhost/nginx_status
Wenn Sie hier keine Fehler erhalten, liegt das Problem in der Plugin-Konfiguration. Wenn der Server hier einen Fehler zurückgibt, können Sie das Debugging durchführen, indem Sie die Konfiguration ändern:
location /nginx_status {
stub_status on;
access_log off;
error_log /var/log/nginx/status.error.log;
allow 127.0.0.1;
deny all;
}
Danach können Sie in der Datei /var/log/nginx/status.error.log
den genauen Grund sehen, warum der Server einen Fehler zurückgegeben hat:
[error] 2203#0: *1442 access forbidden by rule, client: ::1, server: localhost, request: "GET /nginx_status HTTP/1.1", host: "localhost"
In meinem Fall (wie Sie dem Protokoll entnehmen können) war das Problem client: ::1
, während die Konfiguration nur den Zugriff von erlaubte127.0.0.1
Um das Problem zu beheben, können Sie entweder dem Vorschlag von cepharum folgen oder die Konfiguration des virtuellen Hosts ändern:
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;
}
}
(Beachten Sie, dass ich auch durch listen: 127.0.0.1
Port 80 (ipv4 + ipv6) ersetzt habe, da ersteres auch nicht funktioniert hat)
Führen Sie aus, um zu überprüfen, ob das Plugin selbst funktioniert
munin-run nginx_status
(Beachten Sie, dass das Plugin "eingeschaltet" sein muss - ein Symlink muss vorhanden sein /etc/munin/plugins
- lesen Sie das Handbuch, wenn nicht)
Wenn Sie Fehler mit der LWP
Bibliothek erhalten (z. B. LWP::UserAgent
oder LWP::VERSION
), fehlt Ihrem System ein Paket, das vom nginx_status
Plugin benötigt wird .
Führen Sie unter Debian / Ubuntu aus
apt install libwww-perl
Auf CentOS
yum install perl-libwww-perl
Danach testen Sie das Plugin erneut mit munin-run
. Die erwartete Ausgabe (Zahlen werden unterschiedlich sein):
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 hat keine Daten für das Warten auf das Etikett zurückgegeben) hätte ich jahrelang suchen können, um herauszufinden, dass libwww-perl
das fehlte. Vielen Dank für diese ausführliche Antwort.
Möglicherweise hilfreich:
cd /etc/munin/plugins
munin-run PLUGINNAME
Verwenden Sie zusätzlich die Debug-Option, um munin-run.
Überprüfen Sie die Plugin-Datei auf fest codierte Pfade und stellen Sie sicher, dass diese für Ihr System korrekt sind:
grep '/' PLUGINNAME
Das Nginx-Plugin kann davon abhängen, dass Nginx mit bestimmten Modulen kompiliert wird oder die Ausgabe in einem bestimmten Format protokolliert. Gibt es eine Dokumentationsseite für die Plugins?
Entscheidend ist die URL in der Munin-Konfiguration.
Du wirst brauchen
[nginx*]
env.url http://localhost/nginx_status
Hinweis
nginx_status
Nicht
nginx-status
Installieren Sie libwww-perl und führen Sie den Befehl aus munin-run nginx_status
, um Statistiken anzuzeigen.
Starten Sie den Muni-Node-Dienst neu.
apt install libwww-perl time
auf Munin-Knoten für sein Protokoll Probleme mitUse of uninitialized value $LWP::VERSION
Nginx-Plugins angeben .