Thank you for reading this post, don't forget to subscribe!
Задача - перекидывать системные логи в центральный сервер логирования, в нашем случае это fluent но это не важно так как его тут затрагивать не будем.
У нас имеются лог файлы:
/var/log/ceph/ceph-osd.0.log
/var/log/ceph/ceph-mds.node1.log
/var/log/ceph/ceph-mgr.node1.log
/var/log/ceph/ceph-mon.node1.log
содержимое которых мы хотим отслеживать с помощью rsyslog
и передавать его на удалённый сервер логирования.
Для этого, создадим файлы
/etc/rsyslog.d/ceph-ceph-osd.conf
/etc/rsyslog.d/ceph-mds.conf
/etc/rsyslog.d/ceph-mgr.conf
/etc/rsyslog.d/ceph-mon.conf
с таким содержимым:
cat /etc/rsyslog.d/ceph-ceph-osd.conf
$InputFileName /var/log/ceph/ceph-osd.0.log
$InputFileTag ceph-mgr.node1:
$InputFileStateFile ceph-osd.node1log1
$InputFileFacility local3
$InputFileSeverity warning
$InputRunFileMonitor
$InputFilePollInterval 10
local3.* @logger[/spoiler]
cat /etc/rsyslog.d/ceph-mds.conf
$ModLoad imfile
$InputFileName /var/log/ceph/ceph-mds.node1.log
$InputFileTag ceph-mds.node1:
$InputFileStateFile ceph-mds.node1log1
$InputFileFacility local3
$InputFileSeverity warning
$InputRunFileMonitor
$InputFilePollInterval 10
local3.* @logger
cat /etc/rsyslog.d/ceph-mgr.conf
$ModLoad imfile
$InputFileName /var/log/ceph/ceph-mgr.node1.log
$InputFileTag ceph-mgr.node1:
$InputFileStateFile ceph-mgr.node1log1
$InputFileFacility local3
$InputFileSeverity warning
$InputRunFileMonitor
$InputFilePollInterval 10
local3.* @logger
[/spoiler]
cat /etc/rsyslog.d/ceph-mon.conf
[spoiler]
$InputFileName /var/log/ceph/ceph-mon.node1.log
$InputFileTag ceph-mon.node1:
$InputFileStateFile ceph-mon.node1log1
$InputFileFacility local3
$InputFileSeverity warning
$InputRunFileMonitor
$InputFilePollInterval 10
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
.
rsyslog
: