Analyse des logs de votre site : décrypter les robots, les erreurs et le trafic réel dans Nginx/Apache

Dans les logs serveur, 70 à 85 % des requêtes viennent de robots et de scripts ; les vrais visiteurs humains ne représentent souvent que 15 à 30 %. Se fier au total des visites induit gravement en erreur. La bonne méthode tient en trois étapes : commencez par filtrer...

日志分析三件事:分清谁在爬、哪里在错、人在哪Reading server logs: who crawls, what errors, where the humans are 反直觉:日志里 70% 至 85% 的请求不是人,别把爬虫量当成流量增长Counter-intuitive: 70%-85% of log rows are bots, not human visits 维度Dimension 看什么What to look at 爬虫识别Bot traffic UA 字段 + IP 反查UA string + IP lookup 区分好爬与坏爬Good vs bad crawlers AI 爬虫单独统计Track AI bots separately 错误排查Errors 404 死链与 5xx 故障404s and 5xx outages 错误率阈值告警Error-rate alerting 5xx >1% 立即查5xx above 1% = act 真人流量Human traffic 去机器人后再算 PVStrip bots before PV 落地页与来源路径Landing pages and referrers 真人数常占 15% 至 30%Humans often 15%-30% 标准工具链:GoAccess 周报 + awk 按小时统计 + 每月一次全量审计Toolchain: GoAccess weekly + awk hourly + monthly full audit 日志至少保留 90 天,按月切割压缩;CDN 回源日志才是真实源站视角Keep 90+ days, rotate monthly; origin pull logs show real back-to-source traffic 动作优先级:5xx 错误 > 404 死链 > AI 爬虫读取情况 > 真人 PV 趋势Priority: 5xx > 404s > AI crawl reads > human PV trend 先读错误,再读爬虫,最后才看流量——顺序反了容易被数字误导Read errors first, then bots, then traffic; reverse order misleads
Trois lectures des logs Nginx/Apache : identifier les robots, traquer les erreurs et retrouver le trafic humain

Analyse des logs de votre site : décrypter les robots, les erreurs et le trafic réel dans Nginx/Apache

Conclusion d’abord : Dans les logs serveur, 70 à 85 % des requêtes viennent de robots et de scripts ; les vrais visiteurs humains ne représentent souvent que 15 à 30 %. Se fier au total des visites induit gravement en erreur. La bonne méthode tient en trois étapes : commencez par écarter les robots grâce au User-Agent et à l’IP, surveillez ensuite le taux d’erreurs 5xx (à vérifier dès qu’il dépasse 1 %) et les liens morts en 404, puis seulement analysez les requêtes humaines restantes en termes de PV, de pages d’atterrissage et de sources. Conservez les logs au moins 90 jours, sortez un rapport GoAccess chaque semaine et faites un audit complet chaque mois.

1. Pourquoi il ne faut pas se fier au « total des visites »

Beaucoup de webmasters ouvrent leurs logs et se demandent d’abord « combien de requêtes aujourd’hui », avant d’en déduire si les affaires marchent. C’est le premier piège : dans l’access.log par défaut de Nginx, une ligne correspond à une requête HTTP. Un humain qui ouvre votre page d’accueil peut générer 8 à 15 requêtes (HTML, CSS, JS et images comptés séparément), tandis qu’un robot malveillant en envoie des milliers en une minute. Le total ne sert quasiment à rien pour décider.

La conclusion est contre-intuitive :Si votre trafic « explose », il y a huit chances sur dix qu’un robot se soit mis à crawler votre site, pas qu’un client soit arrivé. Le critère est simple : dédupliquez les logs par User-Agent et regardez qui sont les 20 premières sources de requêtes. Si plus de la moitié viennent d’UA de type bot, cette explosion n’a rien à voir avec votre activité. C’est la même logique que Analyse des logs de crawlers IA: d’abord distinguer « qui vous lit », ensuite parler de « combien de lectures ».

Champ du log (Nginx combined) Signification Utilité pour l’analyse
$remote_addr IP source Identifier les IP de datacenters, les scans malveillants, l’origine des robots
$request Méthode + chemin + protocole Voir quelles URL et quels fichiers sont réellement sollicités
$status Code de statut HTTP 200 normal, 301 redirection, 404 lien mort, 5xx panne
$body_bytes_sent Octets renvoyés Repérer les réponses vides et les téléchargements anormaux bloqués
$http_referer Page de provenance Par quel lien un humain est arrivé
$http_user_agent Identifiant du client Distinguer navigateurs, robots de moteurs de recherche et robots d’IA

2. Comment lire : robots, erreurs et trafic humain, trois types de signaux

L’ordre d’analyse recommandé est fixe : « erreurs → robots → humains », jamais l’inverse. Les erreurs pèsent directement sur l’expérience des humains, donc elles passent en premier ; le volume de robots détermine votre budget de crawl et le coût de bande passante ; le trafic humain est la dernière partie qui mérite un examen détaillé. C’est aussi la raison pour laquelle Surveillance et alertes du site place la disponibilité et le taux d’erreurs au premier rang.

Pour repérer les robots, ne vous fiez pas au User-Agent : un crawler malveillant peut usurper celui de Googlebot. La méthode standard est la double vérification : sur l’IP qui se déclare Googlebot, faites une résolution DNS inverse pour confirmer qu’elle vient bien du domaine googlebot.com, puis une résolution directe pour comparer. Un faux crawler ne passe pas cette étape.

Type de signal Fourchette saine Seuil d’intervention Action
Taux d’erreurs 5xx Moins de 0,5 % Plus de 1 % pendant 10 minutes d’affilée Vérifiez PHP-FPM et les logs backend, tout de suite
Part de 404 Moins de 3 % Plus de 100 404 par jour sur une même URL Ajoutez une 301 ou corrigez le maillage interne
Part de requêtes de crawlers suspects 20 % à 40 % Plus de 60 % et bande passante saturée Restriction via robots ou WAF
Nombre de sessions humaines Stable d’une semaine sur l’autre Baisse de plus de 20 % deux semaines de suite Vérifiez l’indexation et vos campagnes, pas le serveur
Part de lectures par des crawlers IA 5 % à 15 % est normal Pic de plus de 3 fois Voyez s’il y a aspiration massive pour l’entraînement

3. En pratique : d’une commande à un rapport hebdomadaire

En solo, pas besoin d’une plateforme d’analyse de logs coûteuse. La chaîne minimale tient en trois outils : GoAccess pour un rapport visuel hebdomadaire, awk pour les stats horaires, et un audit manuel complet une fois par mois. Voici deux cas directement utilisables.

Cas 1 : trouver les URL qui ont généré le plus d’erreurs aujourd’hui. Dans le dossier des logs Nginx, lancez : awk ‘$9 ~ /^5/ {print $7}’ access.log | sort | uniq -c | sort -rn | head -20. La commande extrait le chemin de toutes les requêtes 5xx, les classe par nombre d’occurrences : le top 20 correspond aux pages à corriger en priorité aujourd’hui.

Cas 2 : voir combien de fois Google et les crawlers IA sont passés aujourd’hui. awk ‘BEGIN{IGNORECASE=1} /Googlebot|GPTBot|ClaudeBot|bingbot/ {print $http_user_agent}’ access.log | sort | uniq -c | sort -rn. En répartissant les résultats par UA, vous voyez la proportion entre le crawler d’indexation de Google et les crawlers de lecture des différentes IA. Sur un site derrière un CDN, tirez les logs d’origine et non les logs en périphérie : voir Accélération mondiale par CDN sur la différence entre origine et cache.

Cas 3 : produire un rapport hebdomadaire pour vous-même. Une fois GoAccess lancé, générez un rapport HTML chaque semaine et regardez quatre groupes de chiffres : la répartition des codes de statut avec la part de 4xx et de 5xx, les dix URL les plus demandées, la courbe de trafic par heure, et la part de crawlers par UA. Consultez ce rapport chaque lundi matin : c’est bien plus efficace que de fouiller les logs au coup par coup. Une habitude à prendre : noter chaque anomalie repérée dans un petit tableau. Trois mois plus tard, les régularités sautent aux yeux.

Fréquence Action Livrable Durée
Quotidienne Coup d’œil au tableau de bord des erreurs 5xx Y a-t-il une panne ou non 2 minutes
Chaque semaine Rapport GoAccess de la semaine passée Top chemins, top crawlers, répartition des codes de statut 10 minutes
Mensuel Audit complet des 404 et des UA anormaux Liste des liens morts, liste des IP à bloquer 1 heure
Trimestriel Calibrer la rétention et la rotation des logs Vérifier que le disque ne sature pas et que l’historique reste consultable 30 minutes

4. Pièges : les trois erreurs de lecture les plus fréquentes

Le premier piège consiste à considérer tout code 200 comme normal. Certains plugins attaqués par des scanners malveillants renvoient un 200 accompagné d’une page déguisée : le code est normal mais le contenu a été remplacé. Il faut croiser avec un « nombre d’octets renvoyés anormalement faible » ou une « URL contenant des paramètres qui ne devraient pas y être », et en cas de gravité, appliquer Après un piratage de site la procédure.

Le deuxième piège consiste à ne regarder que le temps réel sans conserver d’historique. Si les logs ne sont pas gérés selon une politique de rotation et de rétention, le disque explose, ou trois mois plus tard, quand on veut savoir « quand la panne de mars a réellement commencé », on ne retrouve rien. Je recommande une rotation quotidienne, 90 jours de données chaudes conservées, puis compression et archivage au-delà.

Le troisième piège consiste à prendre les visites de robots pour un résultat SEO. Que Googlebot vienne dix mille fois ne signifie pas que votre positionnement est bon, cela veut juste dire qu’il explore en boucle. Ce qui compte vraiment pour le SEO, c’est « les pages importantes sont-elles explorées normalement », et cela se lit en croisant avec les données d’indexation, pas en se félicitant du volume de robots. Pour le lien entre performance et exploration, voir Core Web Vitals l’impact sur le taux d’exploration par les robots.

Contresens Symptôme visible Cause réelle La bonne méthode de vérification
Un pic de trafic est une bonne chose Le nombre de requêtes triple Un robot se met à explorer massivement Dédupliquer par UA pour voir la part de vrais humains
Tout est en 200, donc tout va bien Tous les codes sont normaux Page déguisée renvoyée après une injection Vérifier par échantillon les réponses anormalement petites et les paramètres suspects
Beaucoup d’explorations Google = bon positionnement Les requêtes Googlebot sont élevées Il explore en boucle des pages de faible qualité Comparer le volume indexé et le positionnement réel
Les 404 peuvent être ignorés La part semble faible Les vieux liens entrants perdent du poids en continu Rediriger en 301 les 404 les plus fréquents vers la nouvelle page correspondante

FAQ — Questions fréquentes

Quelle différence entre les formats de logs Nginx et Apache, et la méthode d’analyse est-elle la même ?
Globalement oui. Les deux prennent en charge par défaut le format combined : IP, date, ligne de requête, code de statut, nombre d’octets, page de provenance et User-Agent, ces sept colonnes sont identiques. Nginx récupère le code de statut avec $status, Apache avec %s ; la position des champs diffère, attention au décalage d’une colonne quand awk extrait les colonnes. La logique d’analyse est exactement la même : d’abord répartir par code de statut, puis par UA, enfin agréger par chemin. Je recommande d’unifier les deux machines sur le même format combined, les scripts seront réutilisables.
Comment distinguer le vrai Googlebot d’un robot falsifié ?
Faites une double vérification DNS. D’abord une résolution inverse de l’IP qui se prétend Googlebot, pour voir si le nom d’hôte se termine par googlebot.com ou google.com ; puis une résolution directe de ce nom d’hôte, pour voir si l’IP renvoyée est bien celle d’origine. Il faut que les deux étapes concordent pour qu’il s’agisse du vrai robot Google ; un robot falsifié ne peut généralement que modifier la chaîne UA et ne passe pas l’épreuve de l’appartenance de l’IP. Même principe pour les robots d’IA : référez-vous aux plages d’IP publiées officiellement.
Combien de temps faut-il conserver les logs pour que ce soit suffisant ?
Conservez les données chaudes 90 jours, puis compressez et archivez par mois sur disque ou dans un stockage objet, avec un archivage total d’au moins un an. Trois raisons à cela : le dépannage remonte souvent à un incident survenu plusieurs semaines plus tôt ; les problèmes d’indexation SEO se vérifient en comparant avec le crawl d’il y a un ou deux mois ; en cas d’incident de sécurité, il faut pouvoir consulter les journaux d’accès sur six mois. Après découpage quotidien et compression gzip, un an de logs ne pèse généralement que quelques Go.
Faut-il vraiment traiter toutes les erreurs 404 ?
Ne répartissez pas vos efforts uniformément : traitez-les par ordre de fréquence d’accès. Une URL qui génère plus de 100 erreurs 404 par jour indique un vrai backlink ou des clics d’utilisateurs : ajoutez impérativement une redirection 301 vers la page la plus proche sémantiquement. Les 404 de longue traîne, quelques fois par jour, laissez-les de côté et nettoyez-les une fois par mois. Rediriger en 301 tout le site vers la page d’accueil est une erreur qui dilue le poids SEO.
Avec un CDN, les logs serveur restent-ils fiables ?
Non, ils sont fortement sous-estimés et déformés. Les requêtes servies par le cache CDN ne remontent pas à l’origine : les logs d’origine ne voient que la partie qui remonte, alors que la majorité des requêtes des vrais utilisateurs s’arrêtent aux nœuds de périphérie du CDN. La bonne méthode est de consulter les deux : tirez les logs de requêtes de périphérie depuis la console CDN pour voir le trafic total, et utilisez les logs d’origine pour voir les remontées et les erreurs backend. Analysez les robots et le trafic humain avec les logs CDN, diagnostiquez les erreurs 5xx et les pannes PHP avec les logs d’origine.
Voir GPTBot et ClaudeBot crawler dans les logs, est-ce une bonne ou une mauvaise chose ?
Cela dépend de votre objectif. Si vous voulez que votre contenu soit cité par les grands modèles, c’est une lecture normale, voire bienvenue : la hausse des lectures accompagne souvent la hausse des citations par l’IA. Si vous ne voulez pas servir à l’entraînement, vous pouvez interdire les robots concernés dans le fichier robots. Le critère n’est pas le volume de crawl, mais de savoir si vos pages importantes sont bien lues et si la fréquence de lecture est anormalement élevée au point d’impacter la bande passante. Je recommande de compter ces user-agents séparément, à part des robots des moteurs de recherche.

Pour conclure

La valeur de l’analyse de logs ne réside pas dans la « consultation du trafic », mais dans le « diagnostic et l’identification ». Pour un site indépendant géré par une seule personne, dix minutes par semaine pour générer un rapport et une heure par mois pour un audit complet suffisent à couvrir 90 % des problèmes courants : où sont les erreurs, où sont les liens morts, quels robots grignotent votre bande passante, et d’où viennent réellement les visiteurs humains.

Trois étapes concrètes : premièrement, uniformisez le format des logs en combined et conservez-les 90 jours avec découpage quotidien ; deuxièmement, alertez dès que le taux d’erreurs 5xx dépasse 1 %, puis traitez les 404 les plus fréquentes ; troisièmement, comptez séparément les robots et les humains, et cessez de vous mentir avec le nombre total de visites. Pour le rythme de maintenance du site, reportez-vous à calendrier de maintenance du site pour organiser le tout avec la liste des six tâches mensuelles.

Une phrase à retenir : les logs serveur ne sont pas un tableau de bord du trafic, mais l’enregistrement d’une scène d’accident — cherchez d’abord où la voiture a frappé, puis comptez combien de voitures ont circulé.

Cratère
Cratère Expert Cratère

Officiel de l'organisme · Cratère Crater

Cratère (Crater) est une société de services d'expansion internationale spécialisée dans le développement de sites WordPress autonomes, le référencement Google et la croissance globale GEO, au service des secteurs du matériel intelligent, de l'équipement industriel, du SaaS et des énergies nouvelles.

Capacités produitLivre blanc méthodologiqueRapports sectoriels
965partages
78articles de base de connaissances