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

Installieren Sie mysql5.7.10 manuell unter Ubuntu

Dieses Tutorial beschreibt den Prozess der manuel...

Kurze Analyse von CentOS 7 mysql-8.0.19-1.el7.x86_64.rpm-bundle.tar

Baidu Cloud-Festplatte: Link: https://pan.baidu.c...

W3C Tutorial (7): W3C XSL Aktivitäten

Ein Stylesheet beschreibt, wie ein Dokument angez...

So ändern Sie die Standardcodierung von MySQL in Linux

Wenn während des Entwicklungsprozesses nach der W...

Teilen Sie 10 der neuesten Web-Frontend-Frameworks (Übersetzung)

In der Welt der Webentwicklung sind Frameworks wei...

Die Lösung von html2canvas, dass Bilder nicht normal erfasst werden können

Frage Lassen Sie mich zunächst über das Problem s...

Fallstudie zu JavaScript-Style-Objekten und CurrentStyle-Objekten

1. Stilobjekt Das Stilobjekt stellt eine einzelne...

Mit CSS3 lässt sich ein umdrehbarer Hover-Effekt erzielen

CSS3 implementiert einen umdrehbaren Hover-Effekt...

JavaScript CSS3 zur Implementierung einer einfachen Video-Sperrfunktion

In diesem Artikel wird versucht, eine Demo zur Si...

Detaillierte Analyse der MySQL MDL-Metadatensperre

Vorwort: Wenn Sie eine SQL-Anweisung in MySQL aus...