Detaillierte Methode zur Verwendung von GoAccess zum Analysieren von Nginx-Protokollen

Detaillierte Methode zur Verwendung von GoAccess zum Analysieren von Nginx-Protokollen

Vor kurzem wollte ich Goaccess verwenden, um Nginx-Protokolle zu analysieren, aber das Konfigurationsformat von Nginx-Protokollen entspricht nicht dem normalen Format. Es ist vollständig nach unseren eigenen Anforderungen geschrieben, sodass Goaccess es nicht analysieren kann und wir das Format selbst neu definieren müssen. Obwohl es im Internet viele Einführungen zu Goaccess gibt, konzentrieren sich die meisten davon auf die wichtigen Punkte und ignorieren die Anpassung des Formats. Daher werde ich über die Anpassung sprechen.

GoAccess ist ein Open-Source-Tool zur Echtzeit-Webprotokollanalyse, das in einem Befehlszeilenterminal ausgeführt wird. Dieses Tool bietet schnelle und vielfältige HTTP-Statusstatistiken, sodass Administratoren sich nicht mehr mit dem Zählen verschiedener Datentypen herumschlagen müssen und komplizierte Befehle und viele Pipelines/reguläre Ausdrücke hinter sich lassen können.

Analysieren Sie Nginx-Protokolle

Die verschiedenen Anzeigemodi von GoAccess
Goaccess bietet mehrere Möglichkeiten zur Datenvisualisierung, nämlich:

Formatierte Daten über die Befehlszeile ausgeben. Verwenden Sie access.log, um statische Visualisierungsdaten zu generieren. Generieren Sie Echtzeit-Visualisierungsdaten. Beachten Sie, dass Sie, wenn Sie kompilieren und installieren und --enable-geoip=mmdb auswählen, die Konfigurationsdatei bearbeiten und den Parameter --config-file=/usr/local/etc/goaccess/goaccess.conf hinzufügen müssen, wenn Sie den Befehl verwenden. Dies ist nicht erforderlich, wenn Sie mit einem Paketmanager installieren.

Befehlszeilenausgabe GoAccess
goaccess /var/log/nginx/access.log -c, Sie werden zuerst nach dem Datenformat gefragt. Ich verwende hier das erste Format für das Protokoll.

Analysieren Sie das Zugriffsprotokoll, um statisches HTML zu generieren
GoAccess kann auch access.log analysieren, um statisches HTML zu generieren und Daten intuitiver anzuzeigen.

goaccess /var/log/nginx/access.log -o report.html --log-format=COMBINED, greifen Sie dann über den Browser auf report.html zu, um den Bericht anzuzeigen, der alle Daten enthält.

Echtzeit-Analyse von Zugriffsprotokollen
Zusätzlich zur Generierung statischer HTML-Dateien kann GoAccess auch Website-Zugriffsdaten in Echtzeit generieren!

goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=KOMBINIERT --real-time-html --config-file=/usr/local/etc/goaccess/goaccess.conf

Chinesische Unterstützung hinzufügen
Goaccess 1.3 und spätere Versionen bieten Unterstützung für mehrere Sprachen. Führen Sie zunächst apt install language-pack-zh-hans in der Befehlszeile aus, um das chinesische Paket zu installieren, verwenden Sie dann export LANG=zh_CN.UTF-8, um die Umgebungsvariable zu ändern, und verwenden Sie dann goaccess /var/log/nginx/access.log -o /var/www/html/report.html --log-format=COMBINED --real-time-html --config-file=/usr/local/etc/goaccess/goaccess.conf, um GoAccess erneut zu starten. Sie werden feststellen, dass die Benutzeroberfläche bereits auf Chinesisch ist.

Den Echtzeitmodus können Sie in der Demo auf der offiziellen Website https://rt.goaccess.io/?20200209201008 überprüfen.

Abnormales Beenden. Wenn der Echtzeitmodus nicht normal beendet wird, kann er möglicherweise nicht wieder normal gestartet werden. GoAccess verwendet standardmäßig den WebSocket-Port 7890. Verwenden Sie daher lsof -i:7890, um die Prozessnummer anzuzeigen, die den Port belegt, und beenden Sie ihn.

SSL-Unterstützung Wenn Sie Echtzeitdaten über eine verschlüsselte Verbindung ausgeben müssen, müssen Sie --ssl-cert= und --ssl-key= verwenden. Nachdem ich es eingerichtet hatte, besuchte ich report.html und stellte fest, dass die Daten immer noch statisch waren. Plötzlich fiel mir ein, dass ich Cloudflare CDN verwendet hatte und Port 7890 nicht in der Liste der von Cloudflare unterstützten Ports enthalten war. Daher verwendete ich die Parameter --ws-url=wss://Serverdomänenname (unser Browser versucht, eine Verbindung zu Port 8443 des Domänennamens herzustellen):8443 --port=8443, um den Port auf 8443 zu ändern. Unerwartet ist, dass derzeit bei Verwendung des Proxy-Links eine Verbindung zu report.html hergestellt und Echtzeitinformationen angezeigt werden können. Bei einer direkten Verbindung handelt es sich jedoch immer noch um statische Daten, wie durch TCP angezeigt wird.

Gehen Sie zur offiziellen Website von Cloudflare und Sie finden den folgenden Inhalt

Nur die Ports 80 und 443 sind mit den folgenden Diensten kompatibel:

Für HTTP/HTTPS-Verkehr aus Rechenzentren in China mit für das China-Netzwerk aktivierten Domänennamen,
Mit anderen Worten: Es ist unmöglich, über Cloudflare in China eine Verbindung zu Ports herzustellen, die nicht den Code 80/443 haben …

Reverse-Proxy Aber es ist nicht so, dass es keine Möglichkeit zur Verbindung gibt. Schließlich dachte ich an die Reverse-Proxy-Lösung.

Ändern Sie die Startparameter in --ws-url=wss://yourdomain.com/goaccess --port=7890

Ändern Sie die Nginx-Site-Konfigurationsdatei /etc/nginx/site-available/default und fügen Sie den folgenden Inhalt hinzu

Standort /goaccess {
    Proxy_Redirect aus;
    Proxy-Passwort https://127.0.0.1:7890;
    Proxy_http_Version 1.1;
    Proxy_Set_Header-Upgrade $http_upgrade;
    proxy_set_header Verbindung "Upgrade";
    Proxy_set_header Host $http_host;
}

Beachten Sie, dass wir diesen Pfad vom Umschreiben ausschließen müssen, wenn die URL-Umschreibung in Ihrer Site-Konfigurationsdatei aktiviert ist, um eine Beeinträchtigung von /goaccess zu vermeiden.

Platzieren Sie alle Umschreiberegeln am Speicherort /

Standort / { 
    wenn (-f $request_filename/index.html){
    umschreiben (.*) $1/index.html break;
    }
    wenn (-f $request_filename/index.php){
    umschreiben (.*) $1/index.php;
    }
    wenn (!-f $request_filename){
    umschreiben (.*) /index.php;
    }
}

Nachfolgend müssen Sie nichts tun

Standort /goaccess/ {
}

Starten Sie danach nginx neu und greifen Sie erneut auf report.html zu. Sie werden feststellen, dass das Zahnrad auf der linken Seite endlich „Verbinden“ anzeigt.

Wenn Sie es nur selbst ansehen oder es Ihnen egal ist, ob die IP-Adresse preisgegeben wird, ist es weniger problematisch, eine direkte Verbindung über die IP-Adresse herzustellen, als den Weg über das CDN zu nehmen.

Dies ist das Ende dieses Artikels über die Verwendung von GoAccess zur Analyse von Nginx-Protokollen. Weitere verwandte GoAccess-Analysen von Nginx-Protokollinhalten finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die folgenden verwandten Artikel weiter. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Artefakt! Bestes Nginx-Protokollanalysetool GoAccess
  • Lösung für die Protokollpersistenzlösung des Nginx-Ingress-Controllers
  • Detaillierte Erläuterung der Idee des Rollens von Nginx-Protokollen in Docker

<<:  MySQL-Anweisung zum Abrufen aller Daten oder Monate in einem angegebenen Zeitraum (ohne Festlegen gespeicherter Prozeduren oder Hinzufügen von Tabellen)

>>:  Neunundvierzig JavaScript-Tipps und Tricks

Artikel empfehlen

Ein Artikel, der Ihnen hilft, mehr über JavaScript-Arrays zu erfahren

Inhaltsverzeichnis 1. Die Rolle des Arrays: 2. De...

So verwenden Sie Docker zum Bereitstellen eines Django-Technologie-Stack-Projekts

Mit der Popularität und Reife von Docker ist es a...

HTML 5 Stylesheet zurücksetzen

Dieser CSS-Reset basiert auf dem CSS-Reset von Eri...

Vollständiger Vue-Code zur Implementierung der Single-Sign-On-Steuerung

Hier ist zu Ihrer Information eine Vue-Single-Sig...

Detaillierte Erklärung der Linux-Less-Befehlsbeispiele

weniger Dateiname Datei anzeigen kleiner Dateinam...

MySQL 8.0.12 Installations- und Nutzungs-Tutorial

Das Installations- und Verwendungstutorial für My...

Detaillierte Anwendungsfälle von MySql Escape

MySQL-Escape Escape bedeutet die ursprüngliche Se...

Installation und Verwendung von Vue

Inhaltsverzeichnis 1. Vue-Installation Methode 1:...

Lösungen für Websites mit hohem Datenverkehr

Erstens: Stellen Sie zunächst sicher, dass die Ser...

JavaScript ermittelt, ob der Browser IE ist

Als Frontend-Entwickler komme ich an den Tücken d...

Analyse des Implementierungsprinzips von Vue-Anweisungen

Inhaltsverzeichnis 1. Grundlegende Verwendung 2. ...

Detaillierte Erläuterung der MySQL-Datumszeichenfolgen-Zeitstempelkonvertierung

Die Konvertierung zwischen Zeit, Zeichenfolge und...