Analyser les logs

Consulter et exploiter les logs

Analyser les logs

Lorsque votre site rencontre un problème ou simplement si vous souhaitez obtenir quelques informations sur son fonctionnement, il est très utile de pouvoir consulter les logs du serveur web.

Sur notre hébergement vous trouverez les logs des serveurs web dans le dossier ~/admin/logs/ voici ce que vous trouverez dans chacun des sous-dossiers:

  • apache: les logs d’erreur Apache propre aux sites Fichiers statiques, Apache personnalisé et PHP
  • http: les logs de requète http, commun à tous les types de sites
  • jobs: les logs des tâches planifiées paramétrées sur https://admin.ethersys.fr/job/
  • services: les logs d’erreur des services paramétrés sur https://admin.ethersys.fr/service/
  • sites: les logs d’erreur “processus” qui correspondent à ce qu’il se passe entre notre reverse-proxy frontal et les serveurs web

De manière générale, commencez par analyser les logs sites*, puis les logs Apache puis s’il n’y a rien les logs PHP/applicatifs (s’ils sont mis en place et dans le cas d’un site de type PHP). En effet, n’oubliez pas que la solution (Symfony, WordPress…) utilisée pour votre site dispose généralement de logs internes souvent plus précis pour les problème de l’application. Ils sont situés dans un dossier propre à chaque système.

Voir comment formater les logs http

Par ailleurs les logs PHP ne sont par défaut pas activés et vous pouvez les mettre en place grâce aux instructions disponible sur la page dédiée.

Utiliser le shell

Voci quelques exemples de commande shell vous permettant de consulter vos logs

Afficher en direct les requètes sur vos sites

tail -f ~/admin/logs/http/$(date -u +'%Y')/http-$(date -u +'%Y-%m-%d').log

Compter le nombre de requète HTTP sur le site www.ethersys.fr pour la journée du 21 janvier 2019:

zcat ~/admin/logs/http/2019/http-2019-01-21.log.gz | grep "www.ethersys.fr" | wc -l

Compter le nombre d’IPs uniques ayant accédés au site www.ethersys.fr pour la journée du 16 février 2019:

zcat ~/admin/logs/http/2019/http-2019-02-13.log.gz | grep "www.ethersys.fr"  | awk '{print $2}' | sort | uniq | wc -l

Afficher le top 20 des IPs ayants effectuées le plus de requète pour la journée du 13 février 2019:

zcat ~/admin/logs/http/2019/http-2019-02-13.log.gz  | awk '{print $2}' | sort -n | uniq -c | sort -nr | head -20

Afficher le top 20 des adresses les plus consultées du 14 avril 2022:

zcat admin/logs/http/2022/http-2022-04-12.log.gz | awk '{print $1$8}' | sort -n | uniq -c | sort -nr | head -20

Si le format des lignes de log avancés est choisis dans le paramétrage du site on peut également effectuer des tris sur la durée des requètes.
Par exemple pour obtenir les 50 requètes les plus longues du 14 avril 2022:

zcat ~/admin/logs/http/2022/http-2022-04-14.log.gz | awk -vFPAT='([^ ]*)|("[^"]+")' '{print $13 " " $1 " " $7}' | sort -nr | uniq | head -50

Goaccess

Pour obtenir des affichages plus évolués qu’avec les outils de base du shell, il est possible d’utiliser des outils dédiés à l’affichage des logs comme par exemple GoAccess

Sur la veille ou le jour même

goaccess --log-file=$HOME/admin/logs/http/2025/http-[DATE A PRECISER].log --log-format='%v %h %l %e %^[%d:%t %^] \"%r\" %s %b \"%R\" \"%u\"' --time-format='%H:%M:%S' --date-format='%d/%b/%Y'

Depuis des archives (si > 2 jours)

(spécifier plage de date dans la commande zcat)

zcat ~/admin/logs/http/2025/http-2025-0 | goaccess --log-format='%v %h %l %e %^[%d:%t %^] \"%r\" %s %b \"%R\" \"%u\"' --time-format='%H:%M:%S' --date-format='%d/%b/%Y'