Назад | Перейти на главную страницу

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

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

Уведомления через 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

В вариант для журнал новостей (8) состояния:

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

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

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

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

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