Я хотел бы иметь возможность получать уведомление по электронной почте всякий раз, когда syslogd регистрирует что-то, например err
приоритет или выше. Предположим, что это BSD-совместимый демон системного журнала.
На моем сервере OpenBSD я регистрирую и отправляю по электронной почте важные сообщения из своих веб-приложений, которые используют средства local1. Вот мой /etc/syslog.conf чтобы это произошло:
local1.err /var/log/example.com
local1.err |while read log; do echo "$log" | /usr/bin/mail -s SYSLOG me@example.com; done
Обратите внимание, что цикл while бесконечно считывает каждую строку из syslogd и затем направляет ее по электронной почте через echo. Это важно. Как только echo выводит свою строку, он завершает канал, отправляя по почте EOF, чтобы он мог отправить сообщение журнала по электронной почте.
Другими словами, вы не можете напрямую пересылать почту через syslogd следующим образом:
local1.err |/usr/bin/mail -s SYSLOG me@example.com
потому что syslogd будет продолжать писать в канал до тех пор, пока он сам не завершится или не отправит сигнал HUP, после чего почта отправит весь набор сообщений журнала в одном большом электронном письме.
Планирование журнала новостей в cron - еще один способ получать сообщения с меньшей скоростью или большими партиями.
Например, если вы хотите получать ежедневный электронный дайджест сообщений журнала, установите M флаг и указав адрес электронной почты монитора в /etc/newsyslog.conf:
# logfile_name owner:group mode count size when flags monitor
/var/log/example.com root:wheel 640 7 * 24 M me@example.com
Затем запланируйте журнал новостей в crontab:
# minute hour mday month wday command
0 * * * * /usr/bin/newsyslog
1-59 * * * * /usr/bin/newsyslog -m
В -м вариант для журнал новостей (8) состояния:
Режим мониторинга; обрабатываются только записи, помеченные буквой M во флагах. Для каждого отслеживаемого файла журнала любой вывод журнала с момента последнего запуска newsyslog с флагом -m отправляется пользователю, указанному в разделе уведомлений монитора.
Вот решение который использует именованные каналы. Он настроен для Debian, но вы сможете изменить его для BSD.
Вы можете посмотреть logcheck или logwatch. Logcheck будет отправлять вам ежечасно по электронной почте строки журнала, которые не соответствуют набору шаблонов. Я подозреваю, что вы могли бы заставить его делать это чаще. Я не знаю никаких инструментов, которые делают это, просматривая файлы журналов, но я уверен, что есть что-то, что делает это.
Я бы использовал OSSEC. Он отслеживает ваши журналы в режиме реального времени и позволяет легко предупреждать по электронной почте (или другим способом), когда совпадают определенные события. Простой в использовании, масштабируемый и открытый исходный код.
ссылка на сайт: http://www.ossec.net