18
0
Fork 0
wiki/HowtoLog2mail.md

2.4 KiB

Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.

Howto log2mail

Pour surveiller précisement un fichier journal et recevoir des alertes par mail si certains termes apparaissent dans ce fichier, vous pouvez utiliser le logiciel log2mail.

Configuration

Sa configuration se déroule dans le fichier /etc/log2mail/config/default. Par exemple, si vous voulez préciser que vous voulez recevoir un mail dès que le terme fatal apparaît dans le fichier /var/log/mail.log, ajoutez ces lignes :

file = /var/log/mail.log
pattern = "fatal"
mailto = admin@example.com
template = /etc/log2mail/template.mail-fatal

Dans ce cas, on devra avoir un fichier /etc/log2mail/template.mail-fatal qui définit la structure du mail qui sera envoyé. Voici un exemple simple :

From: %f
To: %t
Subject: [LOG2MAIL] Erreur fatale pour mail.log

Bonjour,

Nous avons reconnu le terme "%m" dans "%F" %n fois :
%l

Merci.

Attention, log2mail est un logiciel assez basique... et il plante si il n'a pas les droits d'accès à un fichier déclaré dans sa configuration, il plante !! On prendra donc bien garde Pour des logs système, on devra ainsi souvent faire :

# adduser log2mail adm

Après toutes modifications, il ne faut pas oublié de redémarrer le deamon:

/etc/init.d/log2mail restart

Et vérifié le process avec ps aux:

ps aux |grep log2mail

Configuration avancée

log2mail détecte les pattern avec le code suivant (ligne 25 de data.cc) :

int inPattern::matches(const string& aLine) {
  return (regexec(&rPattern, aLine.c_str(), 0, 0, 0) == 0);
}

D'après le man de regexec(3) :

   POSIX Regex Matching
       regexec() is used to match a null-terminated string against the precom?
       piled  pattern  buffer,  preg.   nmatch  and pmatch are used to provide
       information regarding the location of any matches.  eflags may  be  the
       bitwise-or  of  one  or  both  of REG_NOTBOL and REG_NOTEOL which cause
       changes in matching behavior described below.

On peut donc utiliser les regex POSIX

Voici quelques exemples testés :

# N'importe quelle ligne
pattern = ".*"
# Debut de ligne
pattern = "^ERROR"

Pour une configuration très avancée, on pourra astucieusement utiliser procmail pour faire un filtrage encore plus fin des alertes.