Inleiding
Nog vóór de invoering van de Algemene Verordening Gegevensbescherming (AVG) ben ik gestopt met het gebruik van Google Analytics. Hiermee kun je volledig automatisch en zeer comfortabel statistieken verzamelen en inzien van elk bezoek dat aan jouw website wordt gebracht. Grote kanttekening is daarbij echter wel, dat Google elk stukje (eventueel privacy-gevoelige) informatie meeleest en voor zijn eigen doelen gebruikt. Dat wilde ik niet op mijn geweten hebben.
Toch is het soms wel degelijk interessant om te zien of een website of een specifieke pagina überhaupt wordt bezocht. Komen er zoekmachines (crawlers, bots) langs? Van waaruit wordt naar de eigen site doorverwezen, of komen de bezoekers rechtstreeks?
Webserver logs
Een gemiddelde webserver zoals Apache houdt een uitgebreid logboek bij voor elke aanvraag die hij afhandelt. Natuurlijk worden ook alle fouten bijgehouden, maar dan wel in een eigen bestand. Je kunt er voor kiezen om elke domeinnaam op een (virtuele) server zijn eigen logbestanden te geven:
<VirtualHost *:80>
ServerName fwiep.nl
ServerAlias www.fwiep.nl
#...
ErrorLog ${APACHE_LOG_DIR}/fwiep.nl_error.log
CustomLog ${APACHE_LOG_DIR}/fwiep.nl_access.log combined
#...
</VirtualHost>
Analyse
Aldus ging ik op zoek naar een mogelijkheid om de logbestanden te analyseren zonder dat iemand anders of zelfs een bedrijf misbruik zou kunnen maken van die gegevens. Ik probeerde AWStats, maar werd overweldigd door de enorme hoeveelheid mogelijkheden die dat programma biedt. Bovendien kon ik het niet eenvoudig inrichten... Sorry, ik ben misschien een beetje verwend :)
Toen vond ik met apt search apache log viewer
in mijn terminal een pareltje
waar ik nog nooit van had gehoord: GoAccess. Het is een commandline tool
dat ofwel interactief kan werken of naar HTML
, JSON
of CSV
exporteert.
Archief
Normaal gesproken worden alle logbestanden geroteerd. Dat betekent dat er
na verloop van tijd een cijfer aan de bestandsnaam wordt toegevoegd, waarna
een nieuw (leeg) bestand de oude naam krijgt. Hierna worden oude bestanden
automatisch gecomprimeerd met gzip
. Zo gaat geen enkele melding verloren,
maar nemen de bestanden zo min mogelijk ruimte in beslag. Bijvoorbeeld:
ls -1 /var/log/apache2/*access.log*
fwiep.nl_access.log
fwiep.nl_access.log.1
fwiep.nl_access.log.2.gz
fwiep.nl_access.log.3.gz
Overzicht
Gelukkig zijn er een aantal standaard tools zoals zcat
, zgrep
en zless
beschikbaar die direct met gecomprimeerde bestanden kunnen werken. Gekoppeld
aan GoAccess zoals in onderstaand commando, worden zowel de actuele meldingen
als ook die in gecomprimeerde archiefbestanden samen verwerkt tot een zeer
overzichtelijk HTML
-rapport. Bravo!
zcat -f fwiep.nl_access.log.* | goaccess --log-format=COMBINED -o fwiep.html;