Surveiller ses fichiers de log est une activité nécessaire[1] mais bien souvent rébarbative.
De nombreux programmes existent pour nous faciliter la tâche. On peux par exemple citer KSytemLog installé par défaut sur votre Kubuntu. Mais le propre de ces programmes est d'être exhaustifs. De plus ils demandent une action de votre part, à savoir : penser à aller les regarder ;)

Je vais vous présenter un moyen d'obtenir tous les jours par mail une synthèse des fichiers de log. Cela vous permettra de voir facilement les problèmes et de décider à bon escient d'aller voir plus de détails.

Pre-requis : recevoir les mails locaux

Si vous possédez déjà une configuration vous permettant de recevoir les mails en local[2] vous pouvez sauter cette partie. Sinon, nous allons voir comment les recevoir simplement. Pour cela, nous ne configurerons pas un serveur de mails complet, mais nous allons utiliser les serveurs de votre FAI. Vous pourrez alors transférer vos mails locaux vers n'importe quelle adresse email.

Nous allons nous placer dans ce cas : Architecture

Commençons par installer ce qui est nécessaire :

sudo apt-get install mailx

Cela devrait aussi vous installer postfix. Lors de la configuration du paquet répondez ainsi :

Internet par un FAI
LeNomDeVotreMachine
smtp.fai.fr

Certains FAI demandent que l'adresse expéditeur d'un mail soit valide[3]. Nous allons pour cela utiliser un nom de domaine dynamique, tel que fourni par exemple par dyndns. Editez le fichier /etc/postfix/main.cf en tant que root et modifiez les lignes ainsi :

relayhost = smtp.fai.fr # normalement deja fait
myorigin = /etc/mailname
mydestination = LeNomDeVotreMachine.mon.domaine.dyndns.com, localhost.mon.domaine.dyndns.com, localhost

Le fichier /etc/mailname doit contenir LeNomDeVotreMachine.mon.domaine.dyndns.com
Enfin nous allons indiquer vers quelle adresse relayer les mails de votre utilisateur local :

sudo vi /etc/aliases

# Added by installer for initial user
root: MonUtilisateur
# ajoutez la ligne :
MonUtilisateur: nom.prenom@fai2.fr

Puis pour prendre en compte les modifications :

sudo newaliases
sudo invoke-rc.d postfix reload

Vous pouvez maintenant tester votre configuration : icone

mail MonUtilisateur
...
^D
# voir les mails en cours d'envoi :
mailq
# voir les logs d'envoi :
tail /var/log/mail.info

Lisez le avec votre client de mail habituel pour nom.prenom@fai2.fr

logwatch pour synthétiser les logs

Logwatch est une petite application permettant d'analyser les logs de nombreux service et de produire un rapport synthétique. Le nombre de services connus est impressionnant[4] et il est assez facile d'en ajouter de nouveaux.

Pour l'installer, faîtes simplement :

sudo apt-get install logwatch

Vous pouvez voir qu'il se lancera touts les jours grâce au fichier /etc/cron.daily/00logwatch.

Et voila ! Vous avez maintenant un système de suivit de logs fonctionnel.

Un exemple, un exemple !

Vous recevrez tous les jours par mail, un petit rapport qui devrait ressembler à cela :

Les fichiers ont été rendus anonymes

Configuration "avancée" de logwatch

Plusieurs répertoires sont utilisés pour la configuration :

  1. /usr/share/logwatch/default.conf/ : pour la configuration générique
  2. /usr/share/logwatch/dist.conf/ : pour la configuration spécifique à Ubuntu
  3. /etc/logwatch/ : pour la machine en elle-même, c'est la que vous ferez votre propre configuration

Sans entrez dans les détails, vous trouverez plusieurs niveaux de configuration :

  • configuration de l'application : logwatch.conf
  • emplacement des fichiers de log : logfiles/*.conf
  • paramètres spécifiques à un service à surveiller : services/*.conf

Je vous invite à aller lire la documentation très complète, soit en ligne soit en utilisant la commande suivante :

zcat /usr/share/doc/logwatch/HOWTO-Customize-LogWatch.gz |less

Comme exemple, voyons comment augmenter les détails de l'analyse puis comment ajouter les logs de Cherokee à la place de ceux d'Apache :

sudo vi /etc/logwatch/conf/logwatch.conf
# ajouter la ligne :
Detail = High

Cette ligne remplace Detail = Med de /usr/share/logwatch/dist.conf/logwatch.conf qui remplace elle-même la ligne Detail = Low de /usr/share/logwatch/default.conf/logwatch.conf :)

icone Puis pour remplacer les fichiers de logs d'Apache par ceux de Cherokee créez le fichier suivant :

sudo vi /etc/logwatch/conf/override.conf
 # logfile for http if we use cherokee
logfiles/http: LogFile =
logfiles/http: LogFile = cherokee.error
logfiles/http: LogFile = cherokee.access
logfiles/http: LogFile = cherokee/*.error
logfiles/http: LogFile = cherokee/*.access
logfiles/http: Archive =
logfiles/http: Archive = cherokee.access.*.gz
logfiles/http: Archive = cherokee.error.*.gz
logfiles/http: Archive = cherokee/*.access.*.gz
logfiles/http: Archive = cherokee/*.error.*.gz

Pour tester la configuration de logwatch, vous pouvez utiliser une commande de ce genre :

logwatch --print --detail high --service http --range today

Je vous renvoi vers la page de man pour de plus amples détails.

Il vous reste maintenant le plus compliqué : lire vos mails tous les jours ;)

Notes

[1] en particulier si l'on fait tourner un serveur accessible sur internet

[2] càd envoyés aux utilisateurs locaux de votre machine

[3] au sens des RFC

[4] pour s'en convaicre, allez voir le répertoire /usr/share/logwatch/default.conf/services/