Générer des rapports de fréquentation avec GoAccess

GoAccess est un outil permettant d’analyser les logs d’un serveur web afin de générer des rapports sur la fréquentation des services web.

Il permet notamment de voir la distribution des visites dans le temps, par service ou encore par appareil (User-Agent).

Pour pouvoir l’utiliser il faut récupérer les logs de traefik, notre reverse proxy. La quantité de logs stockés sur les machines est faible mais les logs sont conservés et centralisés par loki sur monitoring.

TODO: lien query avec Loki, plus d’infos sur GoAccess

Traefik n’étant pas nativement supporté par GoAccess il faut lui expliquer comment comprendre les logs avec ce fichier de conf (à placer dans votre dossier courant goaccess.conf)

date-format %Y-%m-%d
time-format %H:%M:%S
log-format {"ClientHost":"%h","request_User-Agent":"%u","request_Referer":"%R","DownstreamContentSize":"%b","downstream_Content-Type":"%M","Duration":"%n","OriginStatus":"%s","RequestAddr":"%v","RequestMethod":"%m","RequestPath":"%U","RequestProtocol":"%H","StartLocal":"%dT%t.%^"}

On peut ensuite lancer cette commande. Attention c’est long, on peut le lancer dans une session tmux et récupérer le rapport plus tard.

TODO: adaptation des dates et de le requête

docker run --rm -i --net proxy grafana/logcli:2.9.6 --addr http://loki:3100 query -o raw --limit 0 --parallel-duration=2m --parallel-max-workers=2 --from 2024-03-08T00:00:00+02:00 --to 2024-03-22T00:00:00+02:00 --retries 10 --min-backoff=25 --max-backoff=180 '{container="traefik"}' | docker run --rm -i -v ./goaccess.conf:/goaccess.conf:ro allinurl/goaccess -a -o html -p /goaccess.conf - > report.html

Le rapport est généré dans report.html, il faut l’ouvrir avec un navigateur web

  • technique/tips/rapport-goaccess.txt
  • de rdelaage