Das Nginx Munin Plugin zeigt keine Daten an


9

Ich möchte NGinx-Statistiken über Munin überwachen, aber die Nginx-Plugins zeigen keine Daten an. Kann man diagnostizieren, warum nur eines der Munin Nginx-Plugins zu funktionieren scheint?

Nginx Munin

Der Server läuft unter CentOS 5.3

Antworten:


14

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.


1
Randnotiz: Das Ausführen von Ubuntu 16.04 zum Aktivieren von Nginx, wie hier dokumentiert, war in meinem Fall nicht ausreichend. Außerdem musste ich apt install libwww-perl timeauf Munin-Knoten für sein Protokoll Probleme mit Use of uninitialized value $LWP::VERSIONNginx-Plugins angeben .
Thomas Urban

Eine weitere Randnotiz: Da IPv6 heute auf Servern unterstützt wird, 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-nodebis http://127.0.0.1/nginx_statusschließlich das Plugin Arbeits gemacht.
Thomas Urban

4

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:

1. Überprüfen Sie die Nginx-Installation

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

2. Überprüfen Sie die Nginx-Konfiguration

Ich gehe davon aus, dass Sie die erforderliche Konfiguration platziert und aktiviert haben . Um zu sehen, ob es funktioniert, können Sie sshzu 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.logden 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.1Port 80 (ipv4 + ipv6) ersetzt habe, da ersteres auch nicht funktioniert hat)

3. Überprüfen Sie die Systemkonfiguration und die Abhängigkeiten

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 LWPBibliothek erhalten (z. B. LWP::UserAgentoder LWP::VERSION), fehlt Ihrem System ein Paket, das vom nginx_statusPlugin 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

Aufgrund der Fehlermeldungen in /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-perldas fehlte. Vielen Dank für diese ausführliche Antwort.
BurninLeo

2

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?


2

Entscheidend ist die URL in der Munin-Konfiguration.

Du wirst brauchen

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

Hinweis

nginx_status

Nicht

nginx-status

0

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.