So installierst du GoAccess Web Log Analyzer auf Rocky Linux 8

GoAccess ist ein leichtgewichtiger Open-Source-Log-Analysator, der Logdateien verschiedener Formate lesen und analysieren kann, darunter Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, Caddy usw. Er ist in C geschrieben und nutzt die ncurses-Bibliothek für seine Dashboard-Oberfläche, die über die Kommandozeile aufgerufen werden kann.

Es kann Berichte im HTML-, JSON- und CSV-Format erstellen, die mit anderen geteilt werden können. Du kannst sogar HTML-Berichte in Echtzeit erstellen, die über einen öffentlichen Link angezeigt werden können.

In diesem Lernprogramm lernst du, wie du GoAccess Analyzer auf einem Rocky-Linux-basierten Server installierst und ihn so konfigurierst, dass er Nginx-Protokolle liest und Echtzeitberichte erstellt.

Voraussetzungen

  1. Ein Server mit Rocky Linux 8.
  2. Ein Nicht-Root-Benutzer mit sudo-Rechten.
  3. Nginx läuft auf dem Server, um auf die Logs zuzugreifen.
  4. Stelle sicher, dass alles auf dem neuesten Stand ist.
    $ sudo dnf update
    

Schritt 1 – Installiere die Abhängigkeiten für GoAccess

Die neueste Version von GoAccess v1.5.2 ist nicht im Standard-Repository verfügbar. Um die neueste Version von GoAccess zu installieren, müssen wir sie aus dem Quellcode bauen. Der erste Schritt besteht darin, die für die Erstellung des GoAccess-Pakets erforderlichen Abhängigkeiten herunterzuladen.

$ sudo dnf install ncurses-devel libmaxminddb-devel openssl-devel 
$ sudo dnf groupinstall 'Development Tools'

Schritt 2 – GoAccess herunterladen und installieren

Lade die neueste Version des GoAccess-Archivs herunter. Du findest die neueste Version von GoAccess auf der offiziellen Download-Seite.

$ wget https://tar.goaccess.io/goaccess-1.5.2.tar.gz

Entpacke die Dateien aus dem Archiv.

$ tar -xzvf goaccess-1.5.2.tar.gz

Konfiguriere und installiere das Paket.

$ cd goaccess-1.5.2
$ autoreconf -fi
$ sudo ./configure --enable-utf8 --enable-geoip=mmdb --with-openssl
$ sudo make
$ sudo make install

Überprüfe, ob GoAccess läuft.

$  goaccess --version
GoAccess - 1.5.2.
For more details visit: https://goaccess.io/
Copyright (C) 2009-2020 by Gerardo Orellana

Build configure arguments:
  --enable-utf8
  --enable-geoip=mmdb
  --with-openssl

Schritt 3 – GeoIP-Datenbank herunterladen

Du kannst die GeoIP-Datenbank entweder von DB-IP oder Maxmind herunterladen. Wenn du sie von Maxmind herunterlädst, musst du ein Konto erstellen und einen kostenlosen Lizenzschlüssel generieren. Der Download von DB-IP kann direkt durchgeführt werden.

Lade die Länder-Zip-Datei von einer der oben genannten Quellen herunter. Nach dem Download entpackst du sie und lädst die Datei .mmdb auf dem Server in einen benutzerdefinierten Ordner wie /home/<user>/geoip hoch.

Schritt 4 – GoAccess konfigurieren

GoAccess speichert seine Konfigurationsdatei unter /usr/local/etc/goaccess/goaccess.conf. Du kannst den Speicherort der Datei auf deinem System mit dem folgenden Befehl überprüfen.

$ goaccess --dcf
/usr/local/etc/goaccess/goaccess.conf

Öffne die Datei zum Bearbeiten.

$ sudo nano /usr/local/etc/goaccess/goaccess.conf

Die meisten der Optionen sind auskommentiert. Du kannst diese Optionen entweder über die Befehlszeile verwenden oder sie hier in der Datei festlegen. Um eine Option zu aktivieren, entferne das Zeichen # vor der Option.

Aktivieren wir zunächst die Option time-format. In unserem Lernprogramm werden wir Nginx-Dateien analysieren, also aktiviere die Option, die für Apache/Nginx-Logs gedacht ist.

# The following time format works with any of the
# Apache/NGINX's log formats below.
#
time-format %H:%M:%S

Als Nächstes aktivierst du die Nginx-Option date-format.

# The following date format works with any of the
# Apache/NGINX's log formats below.
#
date-format %d/%b/%Y

Als Nächstes aktivierst du die Option log-format. In unserem Lehrgang werden wir das combinedLog-Format verwenden, das Nginx üblicherweise benutzt.

log-format COMBINED

Wenn deine Logdateien das Feld Virtual Host enthalten, aktiviere stattdessen die folgende Option.

log-format VCOMBINED

Angenommen, du möchtest mehr Kontrolle über das Log-Format haben. In diesem Fall kannst du stattdessen die folgende Zeile aktivieren (je nachdem, auf welches Log du zugreifst) und je nach Bedarf Parameter hinzufügen oder entfernen.

log-format %v:%^ %h %^[%d:%t %^] "%r" %s %b "%R" "%u"

Um das GeoIP-Modul zu aktivieren, aktiviere die folgende Option, indem du den Pfad zur GeoIP-Datenbank eingibst.

# For GeoIP2 Country database:
# Download the GeoLite2-Country.mmdb.gz
# gunzip GeoLite2-Country.mmdb.gz
#
geoip-database /home/geoip/dbip-country-lite-2021-10.mmdb

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Schritt 5 – GoAccess ausführen

Wenn du GoAccess ausführen willst, musst du normalerweise den folgenden Befehl verwenden.

$ sudo /usr/local/bin/goaccess /var/log/nginx/access.log

Wir müssen sudo verwenden, weil normale Benutzer die Logdateien nicht öffnen können. Außerdem musst du mit dem sudo-Befehl den vollständigen Pfad für die ausführbare Datei angeben, da der sudo-Befehl Anwendungen im Verzeichnis /usr/local/bin nicht erkennt. Du kannst diese Einschränkung jedoch umgehen, indem du einen Symlink erstellst.

Dazu führst du den folgenden Befehl aus.

$ sudo ln -s /usr/local/bin/goaccess /usr/bin/goaccess

Jetzt kannst du GoAccess direkt ausführen.

$ sudo goaccess /var/log/nginx/access.log

Die Nginx-Logdateien zeichnen den gesamten eingehenden HTTP-Verkehr auf. Wenn dein Server schon lange läuft, wirst du mehrere Zugriffsprotokolle sehen, wobei die älteren Protokolle im komprimierten .gz Format vorliegen. Die älteren Log-Dateien werden durch die Log-Rotation erzeugt.

Sobald du den Befehl ausführst, wirst du mit dem folgenden Dashboard begrüßt.

GoAccess Dashboard

GoAccess stellt dir mehrere Tastenkombinationen zur Verfügung, mit denen du durch das Dashboard navigieren kannst.

  • TAB, um vorwärts durch die verfügbaren Module zu navigieren, und SHIFT+TAB, um rückwärts zu navigieren.
  • F5, um das Dashboard zu aktualisieren.
  • g, um an den oberen Rand des Dashboards zu gelangen, und G, um an den unteren Rand zu gelangen.
  • o oder ENTER, um das ausgewählte Modul zu erweitern.
  • j und k, um innerhalb des aktiven Moduls nach unten und oben zu blättern.
  • s, um die Sortieroptionen für das aktive Modul anzuzeigen.
  • /, um in allen Modulen zu suchen und n, um zum nächsten Treffer zu gelangen.
  • 0-9 und SHIFT+0, um das jeweilige nummerierte Modul schnell zu aktivieren.
  • ? um den Schnellhilfe-Dialog anzuzeigen.
  • q, um das Programm zu beenden.

Schauen wir uns alle Panels kurz an.

  1. Einmalige Besucher pro Tag – Dieses Panel ist selbsterklärend. Es listet die einzelnen Besucher, Hits und die kumulative Bandbreite für jedes Datum auf. Standardmäßig sind hier auch Webcrawler und Spider aufgeführt.
  2. Angeforderte Dateien (URLs) – Dieser Bereich enthält Statistiken über die am häufigsten angeforderten nicht statischen Dateien auf deinem Server.
  3. Statische Anfragen – Dieser Bereich ähnelt dem obigen, mit dem Unterschied, dass hier statische Dateien wie Bilder, CSS, JavaScript usw. behandelt werden.
  4. Nicht gefundene URLs (404s) – Dieser Bereich protokolliert alle Anfragen zu Dateien und Pfaden, die auf deinem Server nicht gefunden wurden.
  5. Hostnamen und IPs der Besucher – In diesem Bereich findest du weitere Informationen über die Besucher deiner Website. Du kannst auf o klicken, um das Panel zu erweitern und detaillierte Informationen wie Herkunftsland, Stadt und Reverse DNS zu erhalten.
  6. Betriebssysteme – Hier werden die verschiedenen Betriebssysteme angezeigt, die von den Besuchern verwendet werden.
  7. Browser – Dieses Panel zeigt die verschiedenen Browser an, die von den Besuchern verwendet werden.
  8. Zeitverteilung – Dieser Bereich gibt einen stündlichen Bericht über die Anzahl der Zugriffe, die einzelnen Besucher und die verbrauchte Bandbreite aus.
  9. Virtuelle Hosts – Dieser Bereich zeigt die virtuellen Hosts an, die aus der Logdatei geparst wurden. Es wird nur angezeigt, wenn du das VCOMBINED Log-Format in der obigen Konfigurationsdatei verwendest oder wenn %v Teil der Konfiguration des Log-Formats ist.
  10. Referrer URLs – Hier werden die URLs aufgelistet, die Besucher auf deinen Server verweisen. Dieses Feld ist standardmäßig deaktiviert. Um es zu aktivieren, kommentiere die folgende Zeile in der Konfigurationsdatei aus, indem du # davor setzt.
    #ignore-panel REFERRERS
    
  11. Verweisende Sites – In diesem Bereich werden die IP-Adressen der verweisenden Hosts angezeigt.
  12. Schlüsselwörter – In diesem Bereich werden die Schlüsselwörter angezeigt, die in der Google-Suche, im Google-Cache oder bei Google Translate verwendet werden und zu deiner Website führen. Auch dieser Bereich ist standardmäßig deaktiviert. Aktiviere es, indem du die folgende Zeile in der Konfigurationsdatei auskommentierst.
    #ignore-panel KEYPHRASES
    
  13. HTTP-Statuscodes – Dieser Bereich zeigt die Statistik der HTTP-Statuscodes an, die dein Server als Antwort auf eine Anfrage zurückgibt.
  14. Entfernter Benutzer (HTTP-Authentifizierung) – Dieses Panel zeigt die Benutzerkennung der Person an, die auf ein Dokument auf deinem Server zugreift, das durch HTTP-Authentifizierung geschützt ist. Dieses Feld funktioniert nur, wenn %e Teil der Konfiguration des Log-Formats ist.
  15. Cache-Status – Dieses Panel zeigt an, ob eine Anfrage im Cache gespeichert und von dort bedient wird. Dieses Panel funktioniert nur, wenn %c Teil der Log-Format-Konfiguration ist.
  16. Geostandort – Dieses Feld enthält eine Liste der geografischen Standorte der Besucher, die auf deine Website zugreifen. Es wird nur angezeigt, wenn du den Standort heruntergeladen und in der Konfigurationsdatei hinzugefügt hast.

Schritt 6 – GoAccess als unprivilegiert ausführen

Als gute Sicherheitspraxis gilt: Je weniger Code als Root läuft, desto besser. Um GoAccess ohne Root laufen zu lassen, braucht es die Berechtigung, Logdateien zu lesen.

Die Logdateien des Servers sind normalerweise Teil der Gruppe adm. Du kannst das mit folgendem Befehl überprüfen.

$ ls -l /var/log/nginx
total 68
-rw-r----- 1 nginx adm 30547 Oct 10 12:47 access.log
-rw-r----- 1 nginx adm 35063 Oct 10 12:47 error.log

Wie du siehst, musst du kein Root-Benutzer sein, um die Logdateien zu öffnen. Jeder Benutzer, der zur Gruppe adm gehört, kann die Dateien öffnen.

Der einfachste Weg, GoAccess ohne Root zu starten, ist, den aktuell angemeldeten Benutzer zur Gruppe adm hinzuzufügen. Auf diese Weise kannst du GoAccess unter diesem Benutzer ohne sudo ausführen.

Führe den folgenden Befehl aus, um den aktuellen Benutzer zur Gruppe adm hinzuzufügen.

$ sudo usermod -aG adm $USER 

Melde dich jetzt ab und melde dich wieder an, um die Änderung zu übernehmen. Du kannst auch den folgenden Befehl ausführen, ohne dich abzumelden, um die Änderung umzusetzen.

$ su $USER

Du solltest dann in der Lage sein, GoAccess direkt auszuführen, ohne sudo zu benötigen.

$ goaccess /var/log/nginx/access.log

Schritt 7 – HTML-Berichte generieren

Mit GoAccess kannst du HTML-Berichte erstellen, die du online bereitstellen kannst. Verwende den folgenden Befehl, um einen HTML-Bericht zu erstellen.

$ goaccess /var/log/nginx/access.log -o stats.html

Du kannst die Datei entweder auf deinen lokalen PC für dich selbst oder in deinen Website-Ordner herunterladen, um sie öffentlich bereitzustellen.

GoAccess HTML Bericht

Du kannst sogar einen HTML-Bericht in Echtzeit mit GoAccess erstellen. Aber zuerst musst du den Port 7890 öffnen, damit GoAccess Websocket ausgeführt werden kann. Öffne den Port mit dem folgenden Befehl.

$ sudo firewall-cmd --permanent --add-port=7890/tcp

Lade die Firewall neu, um die Änderung zu übernehmen.

$ sudo firewall-cmd --reload

Führe nun den folgenden Befehl aus, um einen Echtzeit-HTML-Bericht zu erstellen.

$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html

Dadurch wird ein Echtzeitbericht an dem angegebenen Ort erstellt. Der obige Befehl sorgt dafür, dass GoAccess im Vordergrund als WebSocket läuft und auf Verbindungen wartet.

Bei der Ausführung des obigen Befehls gibt es eine kleine Einschränkung. Der obige Befehl funktioniert nur, wenn GoAccess über Benutzerrechte für das Verzeichnis /usr/share/nginx/html verfügt. Da wir GoAccess unter dem aktuell angemeldeten Benutzer ausführen, musst du diesem Benutzer Rechte für das Verzeichnis /usr/share/html geben. Wenn du aus irgendeinem Grund nicht warten kannst, musst du GoAccess mit sudo ausführen.

$ sudo goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html

Wenn du GoAccess im Hintergrund laufen lassen willst, kannst du es stattdessen mit dem folgenden Befehl als Daemon starten.

$ goaccess /var/log/nginx/access.log -o /usr/share/nginx/html/livereport.html --real-time-html --daemonize
Daemonized GoAccess: 78315

Um den GoAccess-Daemon zu stoppen, beende den Prozess mit dem folgenden Befehl.

$ sudo kill -9 78315

Hier verwenden wir die Prozess-ID, die wir in unserem vorherigen Befehl erhalten haben. Wenn du dich nicht mehr an die Prozess-ID erinnerst, kannst du auch den folgenden Befehl verwenden, um den Prozess zu beenden.

$ sudo kill -9 `pidof goaccess`

Beachte, dass wir das Anführungszeichen (`) in unserem Befehl verwenden. Wenn du normale Anführungszeichen verwendest, schlägt der Befehl fehl.

Fazit

Damit ist unsere Anleitung zur Installation und zum Betrieb von GoAccess Log Analyzer auf dem Rocky Linux 8 Server abgeschlossen. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …