GoAccess Web Log Analyzer installeren op Rocky Linux 8

GoAccess is een open-source lichtgewicht log analyzer die logbestanden van meerdere formaten kan lezen en analyseren, o.a. van Apache, Nginx, Amazon S3, Elastic Load Balancing, CloudFront, Caddy, enz. Het is geschreven in de taal C en gebruikt de bibliotheek ncurses voor zijn dashboard interface, die vanaf de commandoregel benaderd kan worden.

Het kan rapporten genereren in HTML, JSON, en CSV formaat, die met anderen gedeeld kunnen worden. Je kunt zelfs real-time HTML rapporten genereren die via een openbare link getoond kunnen worden.

In deze handleiding leer je GoAccess Analyzer op een Rocky Linux server te installeren en in te stellen om Nginx logs te lezen en real-time rapporten te serveren.

Vereisten

  1. Een server met Rocky Linux 8.

  2. Een niet-root gebruiker met sudo rechten.

  3. Nginx draaiend op de server voor toegang tot de logs.

  4. Zorg ervoor dat alles bijgewerkt is.

    $ sudo dnf update
    

Stap 1 – Installeer afhankelijkheden voor GoAccess

De nieuwste versie van GoAccess v1.5.2 is niet beschikbaar in de standaard repository. Om de nieuwste versie van GoAccess te installeren, zullen we hem vanaf de broncode bouwen. De eerste stap is het downloaden van de afhankelijkheden die nodig zijn om het GoAccess pakket te bouwen.

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

Stap 2 – Download en installeer GoAccess

Download de nieuwste versie van het GoAccess archief. Je kunt de nieuwste versie van GoAccess vinden op de officiƫle download pagina.

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

Pak de bestanden uit het archief.

$ tar -xzvf goaccess-1.5.2.tar.gz

Configureer en Installeer het pakket.

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

Controleer of GoAccess draait.

$  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

Stap 3 – GeoIP databank downloaden

Je kunt de GeoIP Database downloaden van DB-IP of van Maxmind. Als je van Maxmind gaat downloaden, moet je een account aanmaken en een gratis licentiesleutel genereren. Downloaden van DB-IP kan rechtstreeks.

Download het land zip bestand van een van de bovenstaande bronnen. Eenmaal gedownload pak je ze uit en upload je het .mmdb bestand op de server naar een eigen map als /home/<user>/geoip.

Stap 4 – Configureer GoAccess

GoAccess bewaart zijn configuratiebestand op /usr/local/etc/goaccess/goaccess.conf. Je kunt de plaats van het bestand op je systeem controleren met het volgende commando.

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

Open het bestand om het te bewerken.

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

De meeste opties zijn uitgecommentarieerd. Je kunt deze opties via de commandoregel gebruiken of ze hier in het bestand instellen. Om een optie in te schakelen, verwijder je het # teken ervoor.

Laten we eerst de optie time-format inschakelen. We zullen in onze handleiding Nginx bestanden gaan parseren, dus schakel de optie in die bedoeld is voor Apache/Nginx logs.

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

Schakel vervolgens de Nginx date-format optie in.

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

Schakel vervolgens de log-format optie in. In onze zelfstudie zullen we het combinedlog formaat gebruiken, wat Nginx gewoonlijk gebruikt.

log-format COMBINED

Als je logbestanden het veld Virtuele Host bevatten, schakel dan in plaats daarvan de volgende optie in.

log-format VCOMBINED

Stel dat je meer controle wilt over de log-indeling. In dat geval kun je in plaats daarvan de volgende regel inschakelen (afhankelijk van het log dat je oproept) en naar behoefte parameters toevoegen of verwijderen.

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

Om de GeoIP module in te schakelen, schakel je de volgende optie in door het pad naar de GeoIP database in te voeren.

# 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

Sla het bestand op door op Ctrl + X te drukken en Y in te voeren als daarom gevraagd wordt als je klaar bent.

Stap 5 – Start GoAccess

Als je normaal gesproken GoAccess wilt draaien, moet je het volgende commando gebruiken.

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

We moeten sudo gebruiken omdat gewone gebruikers de logbestanden niet kunnen openen. Ook moet je met het sudo commando het volledige pad voor het uitvoerbare programma gebruiken omdat het sudo commando toepassingen in de /usr/local/bin directory niet herkent. Je kunt de beperking echter omzeilen door een symlink te maken.

Om dat te doen, voer je het volgende commando uit.

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

Nu kun je GoAccess direct uitvoeren.

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

De logbestanden van Nginx houden alle inkomend HTTP verkeer bij. Als je server al lang draait, zie je meerdere toegangslogs met de oudere logs in gecomprimeerd .gz formaat. De oudere logbestanden worden gegenereerd als gevolg van logrotatie.

Zodra je het commando uitvoert, word je begroet met het volgende dashboard.

GoAccess Dashboard

GoAccess geeft je verschillende sneltoetsen om door het dashboard te navigeren.

  • TAB om vooruit door de beschikbare modules te gaan en SHIFT+TAB om achteruit te gaan.
  • F5 om het dashboard te verversen.
  • g om naar de bovenkant van het dashboardscherm te gaan en G om naar de onderkant te gaan.
  • o of ENTER om de gekozen module uit te klappen.
  • j en k om binnen de actieve module naar beneden en naar boven te scrollen.
  • s om de sorteeropties voor de actieve module te tonen.
  • / om in alle modules te zoeken en n om naar de volgende overeenkomst te gaan.
  • 0-9 en SHIFT+0 om snel de betreffende genummerde module te activeren.
  • ? om het snelle help-dialoogvenster te bekijken.
  • q om het programma te verlaten.

Laten we alle panelen even in het kort doornemen.

  1. Unieke bezoekers per dag – Dit paneel spreekt voor zich. Het vermeldt unieke bezoekers, hits en cumulatieve bandbreedte voor elke datum. Het omvat standaard ook web crawlers en spiders.

  2. Aangevraagde bestanden (URL’s) – Dit paneel geeft de statistieken betreffende de meest aangevraagde niet-statische bestanden op je server.

  3. Statische Verzoeken – Het lijkt op het bovenstaande paneel, behalve dat het statische bestanden zoals afbeeldingen, CSS, JavaScript, enz. behandelt.

  4. Niet Gevonden URL’s (404’s) – Dit paneel registreert alle aanvragen naar bestanden en paden die op je server niet gevonden worden.

  5. Hostnamen en IP’s van bezoekers – Dit paneel geeft meer informatie over de bezoekers van je site. Je kunt op o drukken om het paneel uit te klappen en gedetailleerde informatie te krijgen zoals land van herkomst, stad, en omgekeerde DNS.

  6. Besturingssystemen – Dit paneel toont de verschillende besturingssystemen die door de bezoekers gebruikt worden.

  7. Browsers – Dit paneel toont de verschillende browsers die door de bezoekers gebruikt worden.

  8. Tijdsverdeling – Dit paneel geeft een uurrapport voor het aantal hits, unieke bezoekers, en verbruikte bandbreedte.

  9. Virtuele hosts – Dit paneel toont de virtuele hosts die uit het logbestand geparsed zijn. Het verschijnt alleen als je de VCOMBINED log-indeling gebruikt in het configuratiebestand hierboven of als %v deel uitmaakt van de log-indeling.

  10. Referrer URL’s – Dit toont de URL’s die bezoekers naar je server verwijzen. Dit paneel is standaard uitgeschakeld. Om het aan te zetten, becommentarieer je de volgende regel in het configuratiebestand door er # voor te zetten.

    #ignore-panel REFERRERS
    
  11. Verwijzende sites – Dit paneel toont de IP adressen van de verwijzende hosts.

  12. Trefzinnen – Dit paneel toont de trefwoorden die gebruikt worden bij Google Zoeken, Google cache of Google Vertalen en die naar je site leiden. Ook dit paneel is standaard uitgeschakeld. Schakel het in door de volgende regel in het configuratiebestand van commentaar te voorzien.

    #ignore-panel KEYPHRASES
    
  13. HTTP Status Codes – Dit paneel toont de statistieken voor HTTP status codes die je server teruggeeft als hij op een verzoek antwoordt.

  14. Remote User (HTTP Authentication) – Dit paneel toont de gebruikers-ID van de persoon die een document op je server benadert, beschermd door HTTP authenticatie. Dit paneel werkt alleen als %e deel uitmaakt van de log-format configuratie.

  15. Cache status – Dit paneel bepaalt of een verzoek in de cache zit en daaruit geserveerd wordt. Dit paneel werkt alleen als %c deel uitmaakt van de log-format configuratie.

  16. Geo Location – Dit paneel geeft een lijst van geografische locaties van de bezoekers die je site bezoeken. Het verschijnt alleen als je de locatie ervan hebt gedownload en toegevoegd in het configuratiebestand.

Stap 6 – Start GoAccess als onbevoegd

Als een goede beveiligingspraktijk geldt: hoe minder de code die als root werkt, hoe beter. Om GoAccess zonder root te draaien, heeft het machtigingen nodig om logbestanden te lezen.

De logbestanden van de server horen meestal bij de groep adm. Je kunt dat controleren met het volgende commando.

$ 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

Zoals je ziet, hoef je geen root gebruiker te zijn om de logbestanden te openen. Elke gebruiker die bij de adm groep hoort kan de bestanden openen.

De eenvoudigste manier om GoAccess zonder root te draaien is door de huidig ingelogde gebruiker toe te voegen aan de adm groep. Op die manier kun je GoAccess onder die gebruiker draaien zonder sudo.

Voer het volgende commando uit om de huidige gebruiker toe te voegen aan de adm groep.

$ sudo usermod -aG adm $USER 

Log nu uit en log weer in om de verandering toe te passen. Of je kunt het volgende commando uitvoeren zonder dat je hoeft uit te loggen om de verandering door te voeren.

$ su $USER

Je zou GoAccess direct moeten kunnen uitvoeren zonder dat je sudo nodig hebt.

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

Stap 7 – Genereer HTML rapporten

GoAccess kan gebruikt worden om HTML rapporten te genereren die je online kunt serveren. Gebruik het volgende commando om een HTML rapport te genereren.

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

Je kunt het bestand downloaden op je lokale PC voor jezelf of je websitemap om het publiekelijk te serveren.

GoAccess HTML Verslag

Je kunt zelfs een real-time HTML rapport genereren met GoAccess. Maar eerst moet je de 7890 poort openen zodat GoAccess Websocket kan draaien. Open de poort met het volgende commando.

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

Herlaad de firewall om de verandering toe te passen.

$ sudo firewall-cmd --reload

Voer nu het volgende commando uit om een real-time HTML rapport te genereren.

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

Dit zou een real-time rapport genereren op de opgegeven plaats. Het bovenstaande commando laat GoAccess op de voorgrond draaien als een WebSocket die luistert naar verbindingen.

Er is een klein voorbehoud bij het uitvoeren van het bovenstaande commando. Het bovenstaande commando werkt als GoAccess gebruikersrechten heeft op de map /usr/share/nginx/html. Omdat we GoAccess draaien onder de nu ingelogde gebruiker, moet je die gebruiker permissies geven op de /usr/share/html directory. Als je om een of andere reden niet kunt wachten, moet je GoAccess met sudo uitvoeren.

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

Als je GoAccess in de achtergrond wilt draaien, kun je het in plaats daarvan als een daemon draaien met het volgende commando.

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

Om de GoAccess Daemon te stoppen, dood je het proces met het volgende commando.

$ sudo kill -9 78315

We gebruiken hier het proces ID dat we in ons eerdere commando kregen. Als je het proces ID niet meer weet, kun je ook het volgende commando gebruiken om het proces te doden.

$ sudo kill -9 `pidof goaccess`

Merk op dat we de backquote (`) gebruiken in ons commando. Gebruik je gewone aanhalingstekens dan mislukt het commando.

Conclusie

Dit is het einde van onze handleiding over het installeren en uitvoeren van GoAccess Log Analyzer op een Rocky Linux 8 server. Als je vragen hebt, stel ze dan in de commentaar hieronder.