Пример проводится на:
# 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
будет определять появлении новых записей (точнее – записывать свою “позицию” в файле);
InputFileFacility
– facility, который будет использоваться для данных, полученных из этого файла;
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