Dans ce tutoriel détaillé, nous allons installer GoAccess sur votre ordinateur (Windows via WSL, macOS, Linux), puis analyser pas à pas des logs Apache/Nginx téléchargés par FTP depuis un hébergement mutualisé ou serveur web (cela fonctionne de façon similaire chez Ionos, o2switch, OVH, …).
Vous apprendrez à décompresser vos fichiers .gz
, à choisir le bon format de logs (Combined), à générer un rapport HTML lisible dans votre navigateur et à interpréter les sections clés : pages les plus vues, 404, bots, sources de trafic, géographie, etc.
À la fin, vous saurez répéter ces analyses en quelques minutes pour n’importe quel site hébergé sur un serveur mutualisé.
- Pourquoi analyser ses logs quand on est développeur web ou webmaster ?
- Installer GoAccess sur votre ordinateur
- Télécharger les logs de votre serveur web par FTP
- Lancer GoAccess et générer un rapport HTML
- Exemple concret d’étude : logs Ionos (mutualisé) récupérés par FTP
- Aller plus loin : fusion de périodes, filtres et exports
- Conseils pratiques et pièges à éviter pour les logs d'un serveur mutualisé
- Personnaliser via un fichier de config
- Routine d’analyse “express” (ce que nous vous conseillons d’adopter)
Pourquoi analyser ses logs quand on est développeur web ou webmaster ?
Avant de poser la première ligne de commande, prenons un moment pour clarifier l’intérêt concret d’une analyse de logs. Nous utilisons tous des outils comme Matomo, Plausible ou Google Analytics ; pourtant, les logs serveur restent la source la plus brute et exhaustive de ce qui se passe réellement sur votre site.
- Aucune dépendance au JavaScript côté client : un bloqueur d’ads ou de scripts n’empêche pas l’enregistrement de la requête côté serveur. Vous obtenez une vision complète de votre trafic, y compris les navigateurs anciens, les crawlers, ou les utilisateurs qui refusent les cookies.
- Visibilité sur les erreurs : les codes 4xx et 5xx (ex. 404, 403, 500) apparaissent noir sur blanc. En triant par URL, nous repérons en quelques minutes les liens cassés, les ressources manquantes, et les endpoints qui posent problème.
- Sécurité et bots : les logs révèlent les crawlers agressifs, les IP qui martèlent des URL d’admin, ou des schémas d’attaques (ex. scans
/wp-login.php
,/xmlrpc.php
). Avec GoAccess, nous mettons rapidement en évidence qui mange votre bande passante. - SEO technique : suivre les hits de Googlebot/Bingbot, vérifier les erreurs 404 rampantes, repérer les redirections inutiles (chaînes 301/302), et voir si votre sitemap et vos pages stratégiques sont effectivement crawlés.
- Contenu & produit : les panels “Pages”, “Référents” et “Navigateurs/OS” guident des décisions éditoriales : quelles pages performent, d’où viennent les visiteurs, quels appareils testons-nous en priorité.
- Respect de la vie privée : l’analyse se fait chez vous sur des fichiers texte, sans transmission à des tiers.
- Rapidité : GoAccess génère en quelques secondes un tableau de bord HTML autonome que vous pouvez partager en interne.
En bref, vos logs sont un trésor que nous allons apprendre à exploiter entièrement en local, sans toucher à la configuration du serveur mutualisé.
Ce que nous allons faire, étape par étape
- Installer GoAccess sur votre machine (Windows via WSL, macOS, Linux).
- Récupérer des logs Ionos par FTP et les décompresser.
- Lancer GoAccess en ligne de commande sur ces logs, générer un rapport HTML et l’interpréter.
- Automatiser la routine pour répéter l’analyse en quelques minutes.
Installer GoAccess sur votre ordinateur
Nous allons couvrir les trois environnements les plus courants. Vous n’avez pas besoin d’être administrateur serveur : tout se passe en local.
a) macOS (avec Homebrew)
Si Homebrew est déjà installé sur votre Mac, l’installation est directe :
brew install goaccess
La formule Homebrew “goaccess” est officiellement publiée ; c’est la manière la plus simple sur macOS.
Vérifiez ensuite :
goaccess --version
b) Windows (recommandé : WSL)
Sous Windows, la façon la plus confortable d’utiliser GoAccess est le Windows Subsystem for Linux (WSL). Activez WSL, installez une distribution (Ubuntu, Debian…), puis installez GoAccess à l’intérieur. Microsoft documente la commande wsl --install
qui installe WSL2 et une distro par défaut.
- Ouvrez PowerShell en Administrateur, exécutez :
wsl --install
Redémarrez si demandé, puis choisissez une distribution (par exemple Ubuntu). - Ouvrez ensuite Ubuntu (depuis le menu Démarrer) et installez GoAccess :
sudo apt update sudo apt install goaccess
(GoAccess est dans les dépôts Ubuntu ; vous pouvez aussi compiler la dernière version si besoin.) - Testez :
goaccess --version
Alternative avancée : il existe des pistes via Cygwin ou des ports non officiels, mais WSL est plus simple et plus fiable pour un usage courant.
c) Linux (Ubuntu/Debian, Fedora, Arch…)
Sur les principales distributions, GoAccess est disponible via le gestionnaire de paquets :
- Debian/Ubuntu :
sudo apt update sudo apt install goaccess
(Pour la toute dernière version, la compilation depuis les sources est documentée sur le site officiel.) - Fedora :
sudo dnf install goaccess
- Arch Linux :
sudo pacman -S goaccess
(Référencé sur la page “Downloads”.)
Télécharger les logs de votre serveur web par FTP
Nous allons illustrer la récupération des logs chez Ionos car l’hébergeur expose un dossier dédié logs/
accessible en FTP/FTPS/SFTP. Cela fonctionne quasiment de la meme façon chez les autres hébergeurs. Les fichiers suivent un schéma de nommage par semaine (CW) et jour (D), compressés en .gz
pour les jours précédents (ex. access.log.32.3.gz
).
a) Récupérer vos identifiants FTP sécurisés
Dans l’espace client Ionos, vous trouverez les identifiants et paramètres de connexion pour FTPS/SFTP (hôte, utilisateur, mot de passe, port). Notez-les, nous allons les utiliser dans notre client FTP tel FileZilla ou Cyberduck, WinSCP…
b) Se connecter avec le client FTP et rapatrier les logs
- Lancez FileZilla.
- Dans le Gestionnaire de sites, créez une nouvelle entrée :
- Hôte : le nom d’hôte FTP fourni par Ionos (souvent du type
homeXXX.1and1-data.host
). - Protocole : SFTP (si activé) ou FTPS – FTP sur TLS de préférence.
- Port : laissez vide ou utilisez celui indiqué par Ionos.
- Type d’authentification : normal (entrez utilisateur + mot de passe).
- Hôte : le nom d’hôte FTP fourni par Ionos (souvent du type
- Connectez-vous et, dans l’arborescence du serveur, ouvrez le dossier
logs/
(à la racine de votre espace web). Selon les offres, vous verrez des fichiers du type :access.log.CW.gz
pour les semaines passées,access.log.CW.D.gz
pour les jours de la semaine en cours.
Téléchargez 2 ou 3 jours représentatifs, par exemple :access.log.32.3.gz
,access.log.32.4.gz
,access.log.32.5.gz
.
Remarque pour o2switch : sur un cPanel mutualisé, les “Accès bruts” se téléchargent généralement depuis cPanel (section Mesures > Accès brut), pas via FTP. Vous pouvez tout à fait les récupérer par le navigateur puis les analyser exactement de la même manière en local.
c) Décompresser les archives .gz
- macOS / Linux : placez-vous dans le dossier où vous avez téléchargé les logs et exécutez :
gunzip access.log.32.3.gz access.log.32.4.gz access.log.32.5.gz
Vous obtenez des fichiers texte :access.log.32.3
, etc. - Windows (WSL) : soit vous décompressez avec 7-Zip depuis l’Explorateur, soit vous faites tout dans WSL après avoir copié les fichiers dans votre répertoire Linux :
gunzip access.log.32.3.gz access.log.32.4.gz access.log.32.5.gz
Astuce : au lieu de décompresser “en dur”, nous pouvons streamer le contenu compressé vers GoAccess (voir plus bas :
zcat … | goaccess … -
), ce qui évite de multiplier les fichiers intermédiaires.
Lancer GoAccess et générer un rapport HTML
GoAccess sait lire presque tous les formats de logs (Common/Combined Apache, W3C/IIS, CloudFront, etc.). Dans un mutualisé Apache classique (Ionos, o2switch), le format par défaut est “NCSA Combined (Combined Log Format)” : IP, date/heure, requête, code HTTP, taille, “Referer”, “User-Agent”. Nous allons donc utiliser --log-format=COMBINED
.
a) Première inspection en mode interactif (terminal)
Placez-vous dans le dossier contenant vos fichiers décompressés et démarrez une première vue terminal :
goaccess access.log.32.3 --log-format=COMBINED --tz=Europe/Paris
--tz=Europe/Paris
aligne les dates de rapport sur votre fuseau horaire, pratique si les logs sont en UTC côté hébergeur.- L’interface ncurses s’ouvre : vous pouvez naviguer avec les flèches, Entrée pour zoomer un panel,
?
pour l’aide,q
pour quitter.
Sous macOS, il est parfois impératif de convertir le mois abrégé en chiffre (Aug
→ 08
) pour que le format devienne 13/08/2025
, ce qui est compatible avec GoAccess.
Exemple de prétraitement avec sed
:
sed -E 's#([0-9]{2})/Jan/#\1/01/#; s#([0-9]{2})/Feb/#\1/02/#; s#([0-9]{2})/Mar/#\1/03/#; s#([0-9]{2})/Apr/#\1/04/#; s#([0-9]{2})/May/#\1/05/#; s#([0-9]{2})/Jun/#\1/06/#; s#([0-9]{2})/Jul/#\1/07/#; s#([0-9]{2})/Aug/#\1/08/#; s#([0-9]{2})/Sep/#\1/09/#; s#([0-9]{2})/Oct/#\1/10/#; s#([0-9]{2})/Nov/#\1/11/#; s#([0-9]{2})/Dec/#\1/12/#' access.log.33.3 > access_fixed.log
- Ça transforme
13/Aug/2025
→13/08/2025
.
Ensuite lancer GoAccess :
goaccess access_fixed.log \
--log-format=COMBINED \
--date-format=%d/%m/%Y \
--time-format=%T \
--tz=Europe/Paris
Regardez déjà :
- Visitors/Visits (visiteurs et visites uniques),
- Requests (pages/ressources les plus demandées),
- Static Requests (CSS/JS/images),
- Not Found URLs (404s),
- Referrers (sources de trafic),
- Hosts (IP et volume),
- User Agents (navigateurs, bots),
- Status Codes (qualité des réponses).
b) Générer un rapport HTML statique propre
La force de GoAccess, c’est le rapport HTML autonome que nous pouvons ouvrir dans n’importe quel navigateur ou partager en interne (il contient tout en un seul fichier).
Pour un seul fichier :
goaccess access.log.32.3 \
--log-format=COMBINED \
--tz=Europe/Paris \
-o rapport-32-3.html
Ou, si vous avez été obligé de fixé les données depuis macOS nous devons prétraiter le log pour transformer Aug
→ 08
, Sep
→ 09
, etc. Exemple avec sed
:

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?sed -E 's#Jan#01#; s#Feb#02#; s#Mar#03#; s#Apr#04#; s#May#05#; s#Jun#06#; s#Jul#07#; s#Aug#08#; s#Sep#09#; s#Oct#10#; s#Nov#11#; s#Dec#12#' access.log.32.3 > access_fixed.log
Puis lancer GoAccess avec :
goaccess access_fixed.log \
--log-format=COMBINED \
--date-format=%d/%m/%Y \
--time-format=%T \
--tz=Europe/Paris \
-o rapport-32-3.html
- Ici
%d/%m/%Y
fonctionne car le mois est numérique.

Pour plusieurs jours d’un coup, concaténons tout à la volée :
zcat access.log.32.3 access.log.32.4 access.log.32.5 \
| goaccess --log-format=COMBINED --tz=Europe/Paris \
-o rapport-semaine-32.html -
Si vos fichiers sont compressés et que vous ne voulez pas les décompresser :
- macOS/Linux :
zcat access.log.32.3.gz access.log.32.4.gz access.log.32.5.gz \ | goaccess --log-format=COMBINED --tz=Europe/Paris \ -o rapport-semaine-32.html -
- Ou selon l’outil dispo :
gunzip -c *.gz | goaccess … -
Ouvrez ensuite rapport-semaine-32.html
dans votre navigateur : vous avez un tableau de bord complet et cliquable (avec recherches et tris), prêt à être lu par l’équipe. Safari bloque parfois l’ouverture de ce fichier HTML, mieux vaut l’ouvrir avec Chrome, Firefox …
À noter : GoAccess peut aussi produire du CSV et du JSON si vous souhaitez retraiter les données ailleurs (ex.
-o data.json
).
Exemple concret d’étude : logs Ionos (mutualisé) récupérés par FTP
Nous allons dérouler une session réelle avec des logs Ionos, du téléchargement à l’interprétation des panneaux.
Étape 1 — Télécharger et préparer les logs
Nous nous connectons en FTPS/SFTP à l’hôte indiqué par Ionos, ouvrons le dossier logs/
, et rapatrions les fichiers de la semaine 32, jours 3 à 5 (mercredi à vendredi, par exemple). Les fichiers se nomment access.log.32.3.gz
, access.log.32.4.gz
, access.log.32.5.gz
. Ils sont compressés ; nous décidons de ne pas les décompresser et de streamer le tout vers GoAccess :
zcat access.log.32.3.gz access.log.32.4.gz access.log.32.5.gz \
| goaccess --log-format=COMBINED \
--tz=Europe/Paris \
-o rapport-ionos-semaine32.html -
Les noms et l’organisation des fichiers chez Ionos sont conformes à leur documentation : répertoire logs/
dans l’espace web, fichiers access.log.CW.gz
et access.log.CW.D.gz
.
Sur macOS, refaire la procédure ci-dessus pour fixer les données.
Étape 2 — Ouvrir le rapport HTML et lire les panneaux
Nous ouvrons rapport-ionos-semaine32.html
dans le navigateur.
- Visiteurs/Visites
Ce panneau donne un ordre de grandeur du trafic et son évolution jour par jour. Nous regardons les pics : correspondent-ils à une campagne, une newsletter, un post sur X/LinkedIn ? Si un pic se produit à 3 h du matin, il s’agit souvent d’un bot. - Requests (URLs)
Nous identifions les pages les plus vues. Nous vérifions que :- Les pages stratégiques (ex.
/produits/
,/contact/
) figurent en haut. - Il n’y a pas d’URL “techniques” surreprésentées (ex. des assets chargés en boucle).
Nous cliquons sur une URL pour voir les référents associés et confirmer que le trafic est légitime.
- Les pages stratégiques (ex.
- Not Found (404s)
Ici, nous listons toutes les URLs introuvables. Sur un mutualisé, les 404 fréquentes sont souvent :/wp-login.php
ou/xmlrpc.php
(bots qui testent WordPress),- des images/JS/CSS supprimés après une refonte,
- des URLs anciennes non redirigées après un changement d’arborescence.
Nous notons les 404 internes (liens cassés sur vos pages) : à corriger dans le code ou en ajoutant des redirections 301.
- Status Codes
Un taux élevé de 301/302 indique des redirections en chaîne (perte de temps pour les crawlers et utilisateurs). Nous essayons de réduire ces redirections (par exemple, forcer dès le départhttps://www.
pour éviter les allers-retours). - Hosts (IP) et User Agents
Les IP avec des centaines/milliers de hits/jour sont souvent des crawlers. Nous corrélons avec “User Agents” : si un bot non identifié est trop agressif, nous envisageons un rate limit (via.htaccess
ou règles WAF si disponibles sur l’offre). - Referrers (Sources)
Nous distinguons les moteurs de recherche, les sites partenaires ou des URL de spam. En cas de spam referer massif, pensez à filtrer proprement côté app ou via configuration serveur (dans la limite de ce qu’autorise votre mutualisé). - Static Requests
Ce panneau révèle les ressources statiques les plus lourdes/fréquemment demandées. Nous identifions les images non optimisées et les JS très sollicités : compresser, mettre en cache (headersCache-Control
) et envisager des chargements conditionnels.
Rappel : GoAccess supporte nativement le format Combined utilisé sur la plupart des mutualisés Apache. Si vous avez un log dans un autre format (W3C, CloudFront, etc.), réglez
--log-format
en conséquence.
Étape 3 — Décisions concrètes à partir du rapport
- Corriger les 404 internes : mettez à jour les liens dans vos templates. Pour les 404 externes (liens provenant d’autres sites), mettez en place des redirections 301 vers la page la plus pertinente.
- Désengorger les redirections : ciblez les 301/302 récurrentes (
http
→https
,non-www
→www
…), et consolidez vos règles pour servir l’URL canonique directement. - Limiter les bots agressifs : si un UA/host consomme une part anormale des hits, évaluez un blocage raisonnable. Sur mutualisé,
.htaccess
peut suffire pour quelques cas typiques. - Optimiser les assets : identifiez les images/JS/CSS lourds et améliorez le cache (headers) ; vous verrez l’impact à la prochaine analyse.
- SEO : vérifiez que vos pages prioritaires sont effectivement vues par les bots légitimes et qu’elles ne renvoient pasde 3xx/4xx.
Aller plus loin : fusion de périodes, filtres et exports
a) Fusionner beaucoup de fichiers d’un coup
Sur Ionos, vous aurez souvent plusieurs jours/semaines compressés. Vous pouvez chaîner facilement :
zcat access.log.32.*.gz | goaccess --log-format=COMBINED --tz=Europe/Paris -o semaine-32.html -
Ou fusionner plusieurs semaines :
zcat access.log.31.*.gz access.log.32.*.gz \
| goaccess --log-format=COMBINED --tz=Europe/Paris \
-o deux-semaines.html -
b) Exclure certains status codes / chemins
GoAccess offre des options utiles (voir goaccess --help
/manpage) : par exemple, ignorer des codes ou chemins de bruit. Vous pouvez aussi passer par un pré-filtre shell :
zcat access.log.32.*.gz | grep -vE "(/wp-login\.php|/xmlrpc\.php)" \
| goaccess --log-format=COMBINED --tz=Europe/Paris -o filtré.html -
c) Export JSON/CSV pour retraitements
Si vous souhaitez exploiter les données ailleurs :
zcat access.log.32.*.gz \
| goaccess --log-format=COMBINED --tz=Europe/Paris -o rapport.json -
Les formats HTML, JSON et CSV sont pris en charge, ce qui permet d’intégrer facilement l’analyse dans vos pipelines internes.
Conseils pratiques et pièges à éviter pour les logs d’un serveur mutualisé
- Chemin des logs : chez Ionos, c’est bien
logs/
à la racine de votre espace web FTP, avec le nomenclateuraccess.log.CW(.D).gz
. Ne confondez pas avec vos fichiers applicatifs. - Droits/accès : sur un mutualisé, pas besoin d’accès SSH pour analyser en local. Il suffit de télécharger les logs.
- Formats d’heure : GoAccess sait interpréter l’horodatage Apache
[10/Oct/2000:13:55:36 +0200]
quand vous indiquez--log-format=COMBINED
. Ajustez le fuseau via--tz=Europe/Paris
si nécessaire. - Temps de chargement : le format Combined ne contient pas par défaut la durée de traitement. Si vous cherchez des stats de performance serveur, il faut des logs enrichis (
%D
ou%T
côté Apache) — ce n’est généralement pas modifiable en mutualisé. - o2switch : la récupération passe habituellement par cPanel > Mesures > Accès bruts, puis vous analysez en local comme ci-dessus (pas forcément par FTP).
- Sécurité & RGPD : les logs contiennent des IP et des UAs. Évitez de partager les fichiers bruts ; distribuez plutôt le rapport HTML en interne.
Personnaliser via un fichier de config
Si vous souhaitez éviter de répéter les options, créez un fichier :
- Linux/macOS :
~/.goaccessrc
- Contenu minimal :perlCopierModifier
time-format %T date-format %d/%b/%Y log-format COMBINED tz Europe/Paris
Ensuite, un simple :
zcat access.log.32.*.gz | goaccess -o rapport.html -
suffit, puisque le format et le fuseau sont déjà connus.
Pour des usages avancés (ex. GeoIP), consultez la page “Downloads” (compilation avec
--enable-geoip=mmdb
) et utilisez un fichier de base MaxMind.
Routine d’analyse “express” (ce que nous vous conseillons d’adopter)
- Télécharger les logs du jour/la veille depuis
logs/
(Ionos) par FTPS/SFTP. - Générer un rapport HTML consolidé :
zcat access.log.33.*.gz | goaccess -o rapport-hebdo.html --log-format=COMBINED --tz=Europe/Paris -
- Feuille de route : dans le rapport, notez 3 actions :
- corriger les 3 principales 404,
- réduire une redirection récurrente,
- limiter 1 bot trop gourmand.
- Rejouer la semaine suivante et vérifier l’effet (moins de 404, moins de 3xx, trafic propre).
Avec GoAccess, nous disposons d’un tableau de bord local, transparent et rapide pour comprendre exactement ce que voit votre serveur — sans script côté client, sans cookies, et sans perdre d’informations à cause des bloqueurs.
Pour un hébergement mutualisé, la méthode est simple : récupérer les logs (par FTP/FTPS/SFTP chez Ionos, via cPanel Accès bruts chez o2switch), lancer GoAccess avec le format Combined, puis agir sur les enseignements : 404 à corriger, redirections à simplifier, bots à calmer, assets à optimiser.
Répétez cette routine chaque semaine : en quelques analyses, vous améliorez la qualité technique, le SEO, et l’efficience de vos sites — le tout sans toucher à la configuration du serveur mutualisé.