rsyslog: добавление наблюдения за файлом в конфигурацию

Автор: | 16/04/2014

rsyslog_logoПример проводится на:

# rsyslogd -v
rsyslogd 5.8.10, compiled with:

Система:

# cat /etc/redhat-release
CentOS release 6.4 (Final)

Задача – записывать логи ошибок сервера MySQL в отдельный файл (подробнее – в статье MySQL: выводим логи через syslog), и пересылать их на центральный сервер логгирования.

У нас имеется файл /var/log/mysql/mysql-error.log, содержимое которого мы хотим отслеживать с помощью rsyslog и передавать его на удалённый сервер логгирования.

Добавляем “под наблюдение” файл. Создадим файл /etc/rsyslog.d/mysql-watch.conf с таким содержимым:

# /etc/rsyslog.d/mysql-watch.conf

$ModLoad imfile

$InputFileName /var/log/mysql/mysql-error.log
$InputFileTag mysql:
$InputFileStateFile mysqllog1
$InputFileFacility local3

$InputFileSeverity warning
$InputRunFileMonitor
$InputFilePollInterval 1

local3.* @logger

Тут:

InputFileName (обязательный параметр) – указание файла, который нужно наблюдать;
InputFileTag (обязательный параметр) – тег, который будет использоваться для записей, полученных из этого файла;
InputFileStateFile – файл, с помощью которого rsyslog будет определять появлении новых записей (точнее – записывать свою “позицию” в файле);
InputFileFacilityfacility, который будет использоваться для данных, полученных из этого файла;
InputFileSeverity – уровень важности;
InputRunFileMonitor – обязательный параметр, который “запускает” наблюдение – без него просто не будет работать (уберите, что бы временно приостановить);
InputFilePollInterval – промежуток времени в секундах, через который будет “опрашиваться” файл о появлении новых данных;
InputFileReadMode – определение типа содержимого файла – может быть 0, 1 или 2:

0 (по-умолчанию) – line based, каждая новая линия – новая запись лога;

1 – paragraph, между сообщениями содержаться пустые строки;

2 – indented – новые сообщения начинаются с новой строки, если строка начинается с пробела – она считается продолжением предыдущей записи.

И в последней строке – указываем действие для этого facility, в данном случае – отправляем на хост logger по UDP.

Можно сразу писать в базу MySQL, в таком случае:

local3.* :ommysql:localhost,Syslog,rsyslog,MegaPassword

Проверяем конфиг rsyslog:

# rsyslogd -N1
rsyslogd: version 5.8.10, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: WARNING: rsyslogd is running in compatibility mode. Automatically generated config directives may interfer with your rsyslog.conf settings. We suggest upgrading your config and adding -c5 as the first rsyslogd option.
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad immark
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: MarkMessagePeriod 1200
rsyslogd: Warning: backward compatibility layer added to following directive to rsyslog.conf: ModLoad imuxsock
rsyslogd: End of config validation run. Bye.

И перезапускаем его:

# service rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]

Ссылки по теме

http://www.rsyslog.com
https://access.redhat.com