====== Statistiques des logs Apache httpd avec GoAccess ======
===== Information =====
Il peut être utile d'avoir des informations compréhensibles sur les logs apache. GoAccess permet de créer des rapports lisibles pour mieux en retirer des informations.
GoAccess n'a pas pour but de remplacer des outils comme [[https://www.google.com/intl/fr_fr/analytics/|Google Analytics]] ou [[https://matomo.org/|Matomo]]. Il est clairement orienté administrateur système.
GoAccess est aussi dans les dépôts Debian, mais pas à jour (package ''goaccess''). On privilégie le dépôt officiel.
===== Installation =====
Installation des dépendances :
apt install libncursesw5-dev libgeoip-dev geoip-database lsb-release
Ajouter les dépôts GoAccess et installer :
echo "deb http://deb.goaccess.io/ $(lsb_release -cs) main" | tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - http://deb.goaccess.io/gnugpg.key | apt-key add -
apt update
apt install goaccess
Modifier ''/etc/goaccess.conf'' et ajouter :
time-format %T
date-format %d/%b/%Y
log-format %h %^[%d:%t %^] "%r" %s %b "%R" "%u"
===== Utilisation =====
Pour générer un rapport au format html :
goaccess -f /home/www-data/logs/domain.info-access.log -a -o /home/www-data/html/domain.info.html
Vous pouvez ensuite charger la page avec un navigateur.
Il est recommandé de protéger cette page générée par un fichier ''.htaccess'' ou similaire afin de ne pas l'exposer au public. Des informations confidentielles peuvent apparaître selon ce qui se trouve dans vos logs !
Il est possible d'automatiser ce rapport dans une tâche cron.
===== Script d'automatisation de rapports logs html avec variables =====
#!/bin/bash
###################################################
# goaccess parameters #
###################################################
#Dossier des fichiers log
logfolder="/home/www-data/logs/apache2"
#Dossier de sortie des rapports html
outfolder="/home/www-data/html"
#Gestion des ip exclues des rapports
excludelist="-e 69.162.124.226-69.162.124.238"
# 69.162.124.226-69.162.124.238 - Range UptimeRobot
#Exclure des referers
excludereferer="--ignore-referer=domain.info --ignore-referer=*.domain.info"
#Autres options
options="-a -d --double-decode -q"
#Tout les paramètres
params=$options" "$excludelist" "$excludereferer
#Affichage des paraètres pour contrôle
echo "GoAccessParameters : "$params
###################################################
# all vhosts #
###################################################
echo "All Vhosts"
zcat -f $logfolder/*.log* | goaccess -o $outfolder/all-vhosts.html --html-report-title "All Vhosts" $params
###################################################
# domain.info #
###################################################
echo "domain.info"
zcat -f $logfolder/domain.info-ssl-access.log* | goaccess -o $outfolder/domain.info-ssl.html --html-report-title "domain.info SSL" $params
zcat -f $logfolder/domain.info-access.log* | goaccess -o $outfolder/domain.info.html --html-report-title "domain.info" $params
===== Sources =====
[[https://goaccess.io/|goaccess.io]]