Exclusion dans les logs d’Apache
Hello les amis !
Nous verrons dans cet article comment exclure un type de fichier, un referer, une adresse IP de vos fichiers de logs d’accès Apache.
Cela est très intéressant dans le cas un fichier qui n’est pas réellement utile ( je pense au « favicon.ico » par exemple ) ou bien votre adresse IP du serveur de monitoring.
Je vous recommande de lire l’article entièrement, puis d’effectuer les manipulation en même temps que la seconde lecture.
Chargement du module
Ces astuces fonctionnent avec le module Apache « SetEnvIf », vérifiez donc bien que ce module est correctement chargé.
Dans le cas contraire, vous aurez un « configtest » en erreur ou bien un site non fonctionnel ( page blanche ).
Vous devez donc normalement avoir cette ligne ( voir le fichier « httpd.conf » ou les modules sont chargés ) :
LoadModule setenvif_module modules/mod_setenvif.so
Effectuez un « configtest » & « graceful » d’Apache pour valider cela dans un premier temps.
Une fois effectué, vous pouvez passer à la suite de cet article.
Ne pas logger un fichier
Vous ne souhaitez pas voir un fichier dans vos fichiers de logs d’accès Apache ?
C’est simple, voyons ensemble comment faire cela, nous allons prendre l’exemple avec le fichier « favicon.ico » qui arrive souvent en 404.
Cette configuration est à définir dans le fichier de configuration de votre vhost, ou bien dans le fichier « .htaccess » mais je ne le recommande pas.
Nous utiliserons la méthode du « SetEnv » d’Apache afin de faire cela.
Comme nous ne souhaitons pas logger le fichier « favicon.ico », nous allons le définir dans la classe « NO_ACCESS_LOGS », ensuite nous lui dirons d’exclure cette classe dans le « CustomLog ».
J’ai placé cela juste au dessus de ma configuration des fichiers de logs :
# Exclusion de ces fichiers dans les logs d'accès SetEnvIfNoCase Request_URI "^/favicon.ico$" NO_ACCESS_LOGS
Si vous avez envie, vous pouvez rajouter le même genre pour le fichier « robots.txt » comme cela ( à mettre à la suite ) :
SetEnvIfNoCase Request_URI "^/robots.txt$" NO_ACCESS_LOGS
Maintenant que nous avons notre classe « NO_ACCESS_LOGS », nous devons lui dire de ne pas logger cette classe.
Afin de faire cela, vous devrez vous rendre tout à la fin de la ligne du « CustomLog » et rajouter cela ( après le « combined » normalement ) :
env=!NO_ACCESS_LOGS
Une fois cette configuration effectué, il est nécessaire de faire un rechargement de la configuration d’Apache ( « configtest » & « graceful » ).
A vous maintenant de faire un « tail -f access.log » et d’effectuer une requête sur votre « favicon.ico », même s’il n’existe pas. Rien ne doit s’écrire dans le fichier de log !
Ne pas logger une adresse IP
Nous utiliserons la même méthode qu’au dessus, sauf que nous allons déclarer le « Remote_Addr » au lieu de notre « Request_URI ».
De cette manière, je vais dans cet exemple exclure l’adresse IP « 192.168.3.32 » qui correspond à mon monitoring.
Toujours dans votre fichier de configuration vhost, rajouter cette ligne ( placé au dessus des logs pour moi ) :
SetEnfIfNoCase Remote_Addr "192\.168\.3\.32" NO_ACCESS_LOGS
N’oubliez pas de recharger votre configuration Apache par la suite ( « configtest » & « graceful » ) pour la bonne prise en charge.
A vous ensuite de vérifier que cette IP ne ce trouve plus dans vos fichiers de logs d’accès.
A vous de jouer !
Si vous avez correctement suivis l’article, vous êtes désormais capable d’exclure n’importe quoi de vos fichiers de logs d’Apache.
Que ce soit un fichier, une adresse IP, un referer, un user-agent, …
N’hésitez pas à utiliser les commentaires si besoin de détails ou d’aide … ^_^