Visualiser ses logs d'accès nginx avec goaccess
Lorsque l'on veut avoir des statistiques d'accès sur un site, on peut mettre en place google analytics, ou la solution hébergeable et opensource matomos (anciennement piwik).
On peut aussi se contenter des logs fournis par nginx, et utiliser le programme goaccess qui va lire notre fichier de logs généré par nginx afin d'en traiter les données.
La première chose à vérifier est que nginx stocke bien les logs
d'accès. Dans /etc/nginx/nginx.conf
, on peut vérifier la présence de
la ligne suivante :
access_log /var/log/nginx/access.log;
Notons que l'on peut aussi spécifier un fichier de log différent par
virtualhost. Nous allons faire en sorte de pouvoir accéder aux logs de
notre serveur, via l'emplacement /log
, et sécurisé par un mot de passe
(on suppose que le serveur nginx est déjà lancé, et propulse un
serveur web en http+ssl
).
La commande suivante va analyser les logs d'accès générés par nginx,
et en générer un rendu html dans /var/www/log/index.html
.
# Concatène tous les fichiers access.log
# Ignore les accès à la page de logs
|
# Génère les statistiques des logs dans un fichier html
|
En une seule ligne:
| |
Il suffit de rajouter cette commande au crontab, afin qu'elle soit
exécutée assez souvent. Par exemple pour que les stats soient
rafraîchies toutes les 15 minutes, après un crontab -e
:
# m h dom mon dow command
| |
Reste à rendre accessible ce fichier. Générons d'abord des mots de
passe d'accès (nécessite htpasswd
, présent dans le paquet
apache2-utils
sous debian).
Rentrez un mot de passe, et rajoutons le chemin /log
à notre fichier
nginx. Vous devriez avoir un fichier /etc/nginx/sites-enabled/WEBFILE
.
Rajoutez dedans :
location /log {
root /var/www;
index index.html;
auth_basic "Restricted";
auth_basic_user_file "/etc/nginx/.htpasswd";
}
Après un systemctl reload nginx
, vous devriez pouvoir accéder à vos
log depuis https://<servname>/log/
.