Wie kann ich syslogd veranlassen, dass mir bestimmte Protokollnachrichten per E-Mail gesendet werden?

13

Ich möchte in der Lage sein, eine E-Mail-Benachrichtigung zu erhalten, wenn syslogd etwas von etwa errPriorität oder höher protokolliert . Angenommen, dies ist ein BSD-kompatibler Syslog-Daemon.

  • Kann dies erreicht werden?
  • Soll ich eine Named Pipe für ein Shell-Skript verwenden?
  • Welche anderen möglichen Lösungen gibt es?
Jason
quelle

Antworten:

5

Hier ist eine Lösung , die Named Pipes verwendet. Es ist für Debian eingerichtet, aber Sie sollten es für BSD modifizieren können.

Bis auf weiteres angehalten.
quelle
Es endete damit, dass ich meine Lösung darauf gründete, damit ich das E-Mail-Versenden dämonisieren konnte. Danke für den Link.
Jason
Das scheint ein zu großer Hack zu sein. Warum würden Sie Zeit mit Skripten verbringen, wenn es stabile Open-Source-Apps gibt, die das für Sie erledigen? (auch in Echtzeit). * Siehe meine Antwort.
Sucuri
2
Überhaupt kein Hack. So wird so etwas oft gemacht.
Bis auf weiteres angehalten.
5

Benachrichtigungen über syslogd (8)

Auf meinem OpenBSD-Server protokolliere und maile ich wichtige Nachrichten von meinen Webanwendungen, die facility local1 verwenden . Hier ist meine /etc/syslog.conf , um dies zu ermöglichen:

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

Beachten Sie, dass die while-Schleife jede Zeile von syslogd unendlich liest und sie dann per Echo an Mail weiterleitet. Das ist wichtig. Sobald das Echo seine Zeile ausgibt, beendet es die Pipe und sendet eine EOF per E-Mail, damit es die Protokollnachricht per E-Mail senden kann.

Mit anderen Worten, Sie können nicht direkt über syslogd auf E-Mails weiterleiten:

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

weil syslogd so lange in die Pipe schreibt, bis sie selbst beendet oder ein HUP-Signal gesendet wird. Zu diesem Zeitpunkt würde mail den gesamten Satz von Protokollnachrichten in einer großen E-Mail senden.

Benachrichtigungen über newsyslog (8)

Das Planen von newsyslog in cron ist eine weitere Möglichkeit, Nachrichten langsamer oder in großen Mengen abzurufen.

Wenn Sie beispielsweise einen täglichen E- Mail- Auszug der Protokollnachrichten wünschen , setzen Sie das M- Flag und geben Sie eine Überwachungs-E-Mail-Adresse in /etc/newsyslog.conf an :

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

Dann plane newsyslog in crontab:

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

Die Option -m für newsyslog (8) lautet:

Überwachungsmodus; Es werden nur Einträge verarbeitet, die in Flags mit einem "M" gekennzeichnet sind. Für jede überwachte Protokolldatei wird jede Protokollausgabe seit der letzten Ausführung von newsyslog mit dem Flag -m an den Benutzer gesendet, der im Abschnitt zur Überwachung von Benachrichtigungen aufgeführt ist.

Clint Pachl
quelle
3

Vielleicht möchten Sie sich Logcheck oder Logwatch ansehen. Logcheck sendet Ihnen stündlich eine E-Mail mit Protokollzeilen, die nicht mit einer Reihe von Mustern übereinstimmen. Ich vermute, Sie könnten es wahrscheinlich häufiger machen lassen. Ich kenne keine Tools, die das tun, indem sie sich die Protokolldateien ansehen, aber ich bin sicher, dass es etwas gibt, das das tut.

David Pashley
quelle
Ja, ich würde es vorziehen, keine Protokolldateien zu überwachen und zu analysieren, nachdem sie geschrieben wurden, sondern mich einfach in den Protokollierungsprozess einzubinden, damit ich sofort Benachrichtigungen erhalten kann.
Jason
1

Ich würde OSSEC verwenden. Es überwacht Ihre Protokolle in Echtzeit und ermöglicht Ihnen die einfache Benachrichtigung per E-Mail (oder auf andere Weise), wenn bestimmte Ereignisse übereinstimmen. Einfach zu bedienen, skalierbar und Open Source.

Link: http://www.ossec.net

sucuri
quelle
Dies kann für die Anwendung zu viel sein. Das Paket leistet jedoch viel, und wenn es erforderlich ist, kann es passen.
Bis auf weiteres angehalten.