Blog ENI : Toute la veille numérique !
-25€ dès 75€ sur les livres en ligne, vidéos... avec le code FUSEE25. J'en profite !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

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  
    ├──...