Як я можу зробити так, щоб syslogd надсилав мені певні повідомлення журналу?


13

Я хотів би мати можливість отримувати сповіщення електронною поштою, коли syslogd записує щось, скажімо, errпріоритет чи вище. Припустимо, це демон, сумісний із системою BSD.

  • Чи можна це досягти?
  • Чи слід використовувати названу трубу для сценарію оболонки?
  • Які ще можливі рішення є?

Відповіді:


6

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


Закінчилося, грунтуючись на моєму рішенні, щоб я міг демонструвати пошту. Дякуємо за посилання
Jason

Це здається занадто великим злом. Чому ви витрачаєте час на створення сценаріїв, коли для вас є стабільні програми з відкритим кодом? (в режимі реального часу теж). * див. мою відповідь.
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, а потім передає його на пошту через ехо. Це важливо. Після того, як ехо виводить свою лінію, вона закінчує трубку, надсилаючи пошту EOF, щоб вона могла надсилати повідомлення журналу.

Іншими словами, ви не можете передавати електронну пошту безпосередньо через syslogd так:

local1.err    |/usr/bin/mail -s SYSLOG me@example.com

тому що syslogd буде продовжувати записувати в трубу, поки він сам не припиниться або не надішле сигнал HUP, і в цей час пошта буде надсилати весь набір повідомлень журналу в один великий електронний лист.

Повідомлення через новини (8)

Планування розсилки новин в кроні - це ще один спосіб отримувати повідомлення повільніше або масово.

Наприклад, якщо ви хочете щоденного дайджесту електронних повідомлень повідомлень журналу, встановіть прапор 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 для новин (8) визначає:

Режим моніторингу; обробляються лише записи, позначені прапорами "М". Для кожного файлу журналу, що контролюється, будь-який вихід журналу з останнього запуску журналу новин із прапорцем -m надсилається користувачеві, вказаному в розділі сповіщення монітора.


3

Можливо, ви захочете подивитися на реєстраційну систему чи логчер. Logcheck буде надсилати вам електронну пошту щогодини з лініями журналу, які не відповідають набору шаблонів. Я підозрюю, що ви, мабуть, могли змусити це робити це частіше. Я не знаю жодних інструментів, які роблять це, спостерігаючи за логінами, але я впевнений, що є щось, що це робить.


Так, я вважаю за краще не контролювати та аналізувати файли журналів після їх написання, а просто підключитись до процесу реєстрації, щоб я міг отримати миттєві повідомлення.
Jason

1

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

посилання: http://www.ossec.net


Це може бути зайвим для програми. Однак пакет робить багато, і якщо є потреба, то це може бути придатним.
Призупинено до подальшого повідомлення.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.