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 des sites de type Programme utilisateur, NodeJS, Python, Ruby, Deno

Quand vous cherchez à diagnostiquer un problème, n’oubliez pas également que la solution (Magento, WordPress…) utilisée pour votre site dispose généralement de log internes souvent plus précis pour les problème de l’application et situé dans un dossier propre à chaque système.

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

goaccess --ws-url="wss://{{goaccess_vhost_fqdn}}:443" --real-time-html --log-file=/var/log/goaccess/last.log --output=/var/www/goaccess/index.html --log-format='%v %h %l %e %^[%d:%t %^] \"%r\" %s %b \"%R\" \"%u\"' --time-format='%H:%M:%S' --date-format='%d/%b/%Y'
zcat ~/admin/logs/http/2019/http-2019-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'