Gestion des logs sous Apache
Activation et configuration
Le service Apache possède nativement des fonctions de journalisation (écriture dans des fichiers logs) permettant de collecter diverses informations, telles que :
-
l’état du service,
-
les erreurs de configuration,
-
les dépendances non satisfaites,
-
d’autres informations liées aux applications hébergées.
La journalisation est primordiale pour assurer un suivi opérationnel du service, mais peut également constituer une véritable problématique en matière de stockage et de performance.
Il s’agit donc de paramétrer cette journalisation en fonction de ses propres besoins, de l’environnement (production, intégration, recette) et d’utiliser des modules d’Apache spécifiques apportant une granularité supplémentaire.
1. Journaux d’erreur
Par défaut, Apache enregistre des informations liées aux arrêts/démarrage du service ainsi qu’aux erreurs via la directive ErrorLog.
Cette directive est documentée dans le chapitre Configuration de base d’Apache, à la section Directives Core.
ErrorLog "/var/log/apache2.4/error_log"
La directive ErrorLog nous permet ici de préciser où seront enregistrées les informations du service.
a. Utilisation de LogLevel
Par défaut, lors d’un redémarrage de service, voici le niveau de journalisation observé dans le fichier /var/log/apache2.4/error_log :
[Mon Oct 20 12:21:32 2014] [notice] [pid 20911] event.c(2855):
[client AH00494: SIGHUP received. Attempting to restart
[Mon Oct 20 12:21:33.001849 2014] [mpm_event:notice] [pid
20911:tid 139883230811904] AH00489: Apache/2.4.10 (Unix)
ENI_server configured -- resuming normal operations
[Mon Oct 20 12:21:33.001875 2014] [core:notice] [pid 20911:tid
139883230811904] AH00094: Command line:
'/opt/prod/apache2.4/bin/httpd'
Nous pouvons constater que seules des informations de niveau « notice » sont enregistrées dans le fichier de logs.
Les principaux niveaux sont :
Niveau |
Description |
emerg |
Urgences - le système est inutilisable |
alert |
Des mesures doivent être prises immédiatement |
crit |
Conditions critiques |
error |
Erreurs |
warn |
Avertissements |
notice |
Événements importants mais normaux... |
Rotation
La rotation des logs consiste à diminuer la taille des fichiers de journalisation, avec un cycle de conservation défini.
Cela permet :
-
de ne pas finir par se retrouver avec des fichiers d’une taille trop importante,
-
de définir la durée de rétention de l’information, en fonction de la date ou du poids du fichier.
1. Rotation avec Logrotate
Il s’agit ici de la manière la plus commune pour effectuer la rotation des logs d’Apache.
Logrotate est un programme présent sur les distributions Linux ayant justement pour objet de gérer la rotation des logs du système, mais aussi des différents services installés.
Ainsi, pour une installation d’Apache à partir du gestionnaire de packages de la distribution, une configuration type de rotation des logs est créée dans le répertoire /etc/logrotate.d/.
Ce fichier de configuration se présente sous la forme suivante :
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/etc/init.d/apache2 reload > /dev/null
...
Centralisation
1. Principe
La centralisation des logs apporte beaucoup d’avantages, notamment dans un contexte avec plusieurs serveurs web.
Les principaux avantages sont :
-
la consolidation des informations en un seul et même point,
-
l’élimination des accès disques liés à l’écriture des logs sur les serveurs web.
Elle permet également de faciliter le diagnostic et l’analyse en cas de problème, évitant ainsi d’avoir à se connecter sur plusieurs machines pour consulter chaque fichier de logs.
2. Serveur Rsyslog
Rsyslog est un logiciel libre permettant la centralisation des journaux d’événements en utilisant le protocole syslog.
L’implémentation consiste à définir des clients qui communiqueront par le réseau (en UDP ou TCP) avec le serveur central Rsyslog.
a. Installation de Rsyslog
Sur les « clients » et le serveur central, il s’agit d’installer le programme Rsyslog grâce au gestionnaire de packages.
Sous CentOS/RedHat : yum install rsyslog
Sous Debian/Linux ou Ubuntu : apt-get install rsyslog
b. Configuration du serveur Apache
Pour envoyer les logs Apache aux serveurs syslog, nous allons utiliser le programme logger permettant d’interagir avec le service rsyslog.
CustomLog "|/usr/bin/logger -t httpd24" combined
L’argument -t définit un « tag »...
Outil d’interprétation et de statistiques : AWStats
AWStats est un logiciel libre développé en PERL qui permet l’analyse des logs d’Apache (ou les logs d’autres services FTPG, e-mail, etc.) et génère des rapports de consultation accessibles depuis une page Internet.
1. Installation
Comme beaucoup de logiciels open source, AWStats est installable depuis le gestionnaire de packages des distributions.
Ainsi, sous Debian/Linux ou Ubuntu, l’installation se fait comme suit :
marty@vm-compilation-eni:~$ sudo apt-get install awstats
Il est également possible de l’installer en téléchargeant directement les sources sur le site : http://www.awstats.org/
Rendez-vous dans le répertoire /opt/src :
marty@vm-compilation-eni:~$ cd /opt/src/
Téléchargez la dernière version d’AWStats :
marty@vm-compilation-eni:/opt/src$ wget
http://www.awstats.org/files/awstats-7.4.tar.gz
Désarchivez le fichier téléchargé :
marty@vm-compilation-eni:/opt/src$ tar xvzf awstats-7.4.tar.gz
Déplacez le répertoire awstats-7.4 vers /opt/prod/awstats :
marty@vm-compilation-eni:/opt/src$ sudo mv awstats-7.4
/opt/prod/awstats
L’arborescence est la suivante :
marty@vm-compilation-eni:/opt/prod/awstats$ tree -d
.
├── docs
│ ├── images
│ └── scripts
├── tools
│ ├── dolibarr
│ ├── nginx
│ ├── webmin
│ └── xslt
└── wwwroot
├── cgi-bin
│ ├── lang
│ │ ├── tooltips_f
│ │ ├── tooltips_m
│ │ └── tooltips_w
│ ├── lib
│ └── plugins
│ └── example
├──...