rsyslog


Настроим отсылку логов на удаленный rsyslog в centos:
Ставим rsyslog-relp
yum install rsyslog-relp -y
Создаем /etc/rsyslog.d/remote.conf
$ModLoad omrelp — загружаем модуль
local0.* :omrelp:log.domain.net:20514 — настраиваем отправку сообщений категории 0 любой важности
if $programname == 'sshd' then :omrelp:log.domain.net:20514 — настраиваем отправку сообщений генерируемых sshd
Перезапускаем сервис /etc/init.d/rsyslog

Если у нас Centos7,то настраиваем редирект логов из journald в «старый» rsyslog.Добавляем или раскомментируем
ForwardToSyslog=yes в /etc/systemd/journald.conf
и делаем
systemctl restart systemd-journald
Проверить можно командой
logger -p local0.info ‘test message Error’
==========================================
На сервере,на котором собираем логи делаем примерно так:
В /etc/rsyslog.conf:
module(load=»imrelp») # needs to be done just once
input(type=»imrelp» port=»20514″ maxDataSize=»10k»)
Если например хотим хранить логи в mysql,то добавляем
module(load=»ommysql»)
if $fromhost-ip != ‘127.0.0.1’ then :ommysql:127.0.0.1,db_name,db_user,db_pass
и создаем базу
mysql -u root -p < /usr/share/doc/rsyslog-8.33.1/mysql-createDB.sql
==========================================
Для обработки «налету» можно сделать примерно так
создаем файл /etc/rsyslog.d/script.conf
$template SENDVALUE,"%HOSTNAME%;%fromhost%;%msg%;%$DAY%-%$MONTH%-%$YEAR% %$HOUR%:%$MINUTE%"
:msg, contains, "Error" ^/etc/rsyslog.d/mail.sh;SENDVALUE

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