Comment puis-je envoyer par e-mail certains messages de journal à syslogd?

13

J'aimerais pouvoir recevoir une notification par e-mail chaque fois que syslogd enregistre quelque chose, disons errprioritaire ou supérieur. Supposons qu'il s'agit d'un démon syslog compatible BSD.

  • Cela peut-il être accompli?
  • Dois-je utiliser un canal nommé vers un script shell?
  • Quelles sont les autres solutions possibles?
Jason
la source

Réponses:

6

Voici une solution qui utilise des canaux nommés. Il est configuré pour Debian, mais vous devriez pouvoir le modifier pour BSD.

En pause jusqu'à nouvel ordre.
la source
J'ai fini par baser ma solution sur cela pour pouvoir démoniser l'emailing. Merci pour le lien.
jason
Cela semble trop un hack. Pourquoi voudriez-vous passer du temps à faire des scripts alors qu'il existe des applications open source stables pour le faire pour vous? (en temps réel aussi). * voir ma réponse.
sucuri
2
Pas du tout un hack. C'est ainsi que ce genre de choses se fait souvent.
pause jusqu'à nouvel ordre.
6

Notifications via syslogd (8)

Sur mon serveur OpenBSD, je me connecte et envoie des messages importants à partir de mes applications Web, qui utilisent la fonction local1 . Voici mon /etc/syslog.conf pour y arriver:

local1.err    /var/log/example.com
local1.err    |while read log; do echo "$log" | /usr/bin/mail -s SYSLOG [email protected]; done

Notez que la boucle while lit à l'infini chaque ligne de syslogd, puis la redirige vers la messagerie via echo. C'est important. Une fois que l'écho sort sa ligne, il termine le canal, envoyant un courrier électronique un EOF afin qu'il puisse envoyer le message de journal par courrier électronique.

En d'autres termes, vous ne pouvez pas diriger directement vers le courrier via syslogd comme ceci:

local1.err    |/usr/bin/mail -s SYSLOG [email protected]

car syslogd continuera à écrire dans le canal jusqu'à ce qu'il soit lui-même terminé ou envoyé un signal HUP, auquel cas le courrier enverrait l'ensemble des messages de journal dans un seul gros e-mail.

Notifications via newsyslog (8)

La planification de newsyslog dans cron est une autre façon d'obtenir des messages à un rythme plus lent ou en masse.

Par exemple, si vous vouliez un résumé quotidien par e-mail des messages de journal, définissez l' indicateur M et spécifiez une adresse e-mail de moniteur dans /etc/newsyslog.conf :

# logfile_name        owner:group  mode  count  size  when  flags  monitor
/var/log/example.com  root:wheel   640   7      *     24    M      [email protected]

Ensuite, programmez newsyslog dans crontab:

# minute hour  mday  month  wday  command
0        *     *     *      *     /usr/bin/newsyslog
1-59     *     *     *      *     /usr/bin/newsyslog -m

L' option -m pour newsyslog (8) indique:

Mode de surveillance; seules les entrées marquées d'un «M» dans les drapeaux sont traitées. Pour chaque fichier journal surveillé, toute sortie de journal depuis la dernière exécution de newsyslog avec l'indicateur -m est envoyée à l'utilisateur répertorié dans la section de notification du moniteur.

Clint Pachl
la source
3

Vous voudrez peut-être regarder logcheck ou logwatch. Logcheck vous enverra un e-mail toutes les heures avec des lignes de journal qui ne correspondent pas à un ensemble de modèles. Je suppose que vous pourriez probablement le faire plus fréquemment. Je ne connais aucun outil qui le fasse en regardant les fichiers journaux, mais je suis sûr qu'il y a quelque chose qui le fait.

David Pashley
la source
Oui, je préférerais ne pas surveiller et analyser les fichiers journaux après leur écriture, mais simplement me connecter au processus de journalisation pour pouvoir recevoir des notifications instantanées.
jason
1

J'utiliserais OSSEC. Il surveille vos journaux en temps réel et vous permet d'alerter facilement par e-mail (ou par d'autres moyens) lorsque des événements spécifiques sont mis en correspondance. Simple à utiliser, évolutif et open source.

lien: http://www.ossec.net

sucuri
la source
Cela peut être exagéré pour l'application. Cependant, le package fait beaucoup et s'il y a un besoin, il peut être approprié.
pause jusqu'à nouvel ordre.