Relecture

This commit is contained in:
Gregory Colpart 2017-07-16 22:57:12 +02:00
parent e4b9efedd3
commit 613b3976f6

View file

@ -3,17 +3,25 @@ categories: sysadmin
title: Howto Log2mail title: Howto Log2mail
... ...
*Log2mail* est un démon qui surveille en permanence une liste de journaux et qui envoie immédiatement un email si certains termes apparaissent dans ce fichier. C'est un complément idéal à [Logcheck](HowtoLogcheck) qui permet d'alimenter la liste des termes considérés comme anormaux. *Log2mail* était présent dans Debian pendant plusieurs années, il a été retiré mais nous l'utilisons toujours car le [code source](https://github.com/fumiyas/log2mail) est simple et nous n'avons pas trouvé d'équivalent. **Log2mail** est un démon qui surveille en permanence une liste de journaux et qui envoie immédiatement un email si certains termes apparaissent dans ce fichier. C'est un complément idéal à [Logcheck](HowtoLogcheck) qui permet d'alimenter la liste des termes considérés comme anormaux. *Log2mail* était présent dans Debian pendant plusieurs années, il a été retiré depuis Debian 7 mais nous l'utilisons toujours car le [code source](https://github.com/fumiyas/log2mail) est simple et nous n'avons pas trouvé d'équivalent.
## Installation ## Installation
Le paquet pour Debian 7, 8 et 9 est disponible sur <http://pub.evolix.net> Un paquet _.deb_ pour Debian 7, 8 et 9 est disponible sur <http://pub.evolix.net>.
Pour Debian 9 :
~~~
$ wget http://pub.evolix.net/stretch/log2mail_0.3.0-2_amd64.deb
# dpkg -i log2mail_0.3.0-2_amd64.deb
~~~
## Configuration ## Configuration
Sa configuration se déroule dans le fichier _/etc/log2mail/config/default_. 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_ 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 : apparaît dans le fichier `/var/log/mail.log`, ajoutez ces lignes :
~~~ ~~~
file = /var/log/mail.log file = /var/log/mail.log
@ -23,7 +31,7 @@ template = /etc/log2mail/template.mail-fatal
~~~ ~~~
Dans ce cas, on devra avoir un fichier Dans ce cas, on devra avoir un fichier
_/etc/log2mail/template.mail-fatal_ qui définit la structure `/etc/log2mail/template.mail-fatal` qui définit la structure
du mail qui sera envoyé. Voici un exemple simple : du mail qui sera envoyé. Voici un exemple simple :
~~~ ~~~
@ -39,36 +47,38 @@ Nous avons reconnu le terme "%m" dans "%F" %n fois :
Merci. Merci.
~~~ ~~~
Attention, log2mail est un logiciel assez basique... et il plante Attention, *Log2mail* est un assez basique… si il n'a pas les droits d'accès à
si il n'a pas les droits d'accès à un fichier déclaré dans sa configuration, un fichier déclaré dans sa configuration, il plante !! On prendra donc bien
il plante !! On prendra donc bien garde garde à bien vérifier les droits d'accès.
Pour des logs système, on devra ainsi souvent faire : Pour des logs système, on devra ainsi souvent faire :
~~~ ~~~
# adduser log2mail adm # adduser log2mail adm
~~~ ~~~
Après toutes modifications, il ne faut pas oublié de redémarrer le deamon: Après toutes modifications, il ne faut pas oublier de redémarrer le deamon :
~~~ ~~~
/etc/init.d/log2mail restart # systemctl restart log2mail
~~~ ~~~
Et vérifié le process avec ps aux: Et vérifié le process avec `ps aux` :
~~~ ~~~
ps aux |grep log2mail $ ps aux | grep log2mail
~~~ ~~~
## Plusieurs destinataires Pour avoir plusieurs destinataires, on définit la variable _mailto_ ainsi :
~~~ ~~~
mailto = "destinataire1@mail.com destinataire2@mail.com" mailto = "destinataire1@mail.com destinataire2@mail.com"
~~~ ~~~
## Configuration avancée ## Configuration avancée
log2mail détecte les _pattern_ avec le code suivant (ligne 25 de data.cc) : log2mail détecte les _pattern_ avec le code source suivant (ligne 25 de `data.cc`) :
~~~ ~~~
int inPattern::matches(const string& aLine) { int inPattern::matches(const string& aLine) {
@ -76,15 +86,15 @@ int inPattern::matches(const string& aLine) {
} }
~~~ ~~~
D'après le man de regexec(3) : D'après le man de _regexec(3)_ :
~~~ ~~~
POSIX Regex Matching POSIX Regex Matching
regexec() is used to match a null-terminated string against the precom? regexec() is used to match a null-terminated string against the precom?
piled pattern buffer, preg. nmatch and pmatch are used to provide piled pattern buffer, preg. nmatch and pmatch are used to provide
information regarding the location of any matches. eflags may be the 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 bitwise-or of one or both of REG_NOTBOL and REG_NOTEOL which cause
changes in matching behavior described below. changes in matching behavior described below.
~~~ ~~~
On peut donc utiliser les [regex POSIX](http://en.wikipedia.org/wiki/Regular_expression#POSIX) On peut donc utiliser les [regex POSIX](http://en.wikipedia.org/wiki/Regular_expression#POSIX)
@ -98,13 +108,13 @@ pattern = ".*"
pattern = "^ERROR" pattern = "^ERROR"
~~~ ~~~
Pour une configuration très avancée, on pourra astucieusement utiliser _procmail_ pour Dans un mode plus avancé, on peut peut astucieusement combiner l'utilisation de *Log2mail* avec *Procmail*, une première détection sera faite avec *Log2mail* puis envoyé vers un email géré par *Procmail* pour un filtrage encore plus fin des alertes.
faire un filtrage encore plus fin des alertes.
## Debug ## Debug
L'option -N permet de forcer l'écriture des erreurs sur STDERR et que le process ne soit pas deamonizé (mis en tâche de fond) : L'option `-N` permet de forcer l'écriture des erreurs sur STDERR et que le process ne soit pas deamonizé (mis en tâche de fond) :
~~~ ~~~
# /usr/sbin/log2mail -N -f /etc/log2mail/config/ # /usr/sbin/log2mail -N -f /etc/log2mail/config/
~~~ ~~~