Как я могу заставить syslogd отправлять мне определенные сообщения по электронной почте?

13

Я хотел бы иметь возможность получать уведомления по электронной почте всякий раз, когда syslogd регистрирует что-то, скажем, errприоритет или выше. Предположим, что это BSD-совместимый демон syslog.

  • Можно ли это сделать?
  • Должен ли я использовать именованный канал для сценария оболочки?
  • Какие еще возможные решения есть?
Ясон
источник

Ответы:

6

Вот решение, которое использует именованные каналы. Он настроен для Debian, но вы должны иметь возможность изменить его для BSD.

Приостановлено до дальнейшего уведомления.
источник
Закончил на этом свое решение, чтобы я мог демонизировать электронную почту. Спасибо за ссылку.
Джейсон
Это кажется слишком много взломать. Зачем вам тратить время на написание сценариев, когда для этого есть стабильные приложения с открытым исходным кодом? (в режиме реального времени тоже). * см. мой ответ.
Sucuri
2
Не взломать на всех. Это способ, которым подобные вещи часто совершаются.
Приостановлено до дальнейшего уведомления.
6

Уведомления через syslogd (8)

На моем сервере 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, после чего почта отправит весь набор сообщений журнала в одно большое электронное письмо.

Уведомления через новостной журнал (8)

Планирование новостного журнала в 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

Опция -m для newsyslog (8) гласит:

Режим мониторинга; обрабатываются только записи, отмеченные `M 'в флагах. Для каждого отслеживаемого файла журнала любой вывод журнала с момента последнего запуска newsyslog с флагом -m отправляется пользователю, указанному в разделе уведомлений монитора.

Клинт Пахл
источник
3

Вы можете посмотреть на logcheck или logwatch. Logcheck ежечасно отправляет вам электронные письма со строками журнала, которые не соответствуют набору шаблонов. Я подозреваю, что вы могли бы сделать это делать это чаще. Я не знаю никаких инструментов, которые делают это, просматривая файлы журналов, но я уверен, что есть что-то, что делает это.

Дэвид Пашли
источник
Да, я бы предпочел не отслеживать и анализировать файлы журналов после их записи, а просто подключиться к процессу регистрации, чтобы я мог получать мгновенные уведомления.
Джейсон
1

Я бы использовал OSSEC. Он отслеживает ваши журналы в режиме реального времени и позволяет вам легко предупреждать по электронной почте (или другими способами), когда конкретные события совпадают. Простой в использовании, масштабируемый и с открытым исходным кодом.

ссылка: http://www.ossec.net

sucuri
источник
Это может быть излишним для приложения. Тем не менее, пакет делает много, и если есть необходимость, он может подойти.
Приостановлено до дальнейшего уведомления.