понедельник, 28 февраля 2011 г.

Как сделать похожими логи rsyslog и syslog

Rsyslog - самое гибкое средство для управления sysog логами. В основном из-за того, что в нем можно настроить множество фильтров. Недавно столкнулся с проблемой совместимости формата со старым syslog'овским.

Syslog прилетает с удаленной машины. Так вот, в старом формате в лог помимо прочего заносился ip адрес источника syslog. Т.к. формат лога описывается в template, прописал стандартный темплейт:

# описываем темлейт
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag% %msg:::drop-last-lf%\n"
# и применяем его
local2.* /var/syslog/cisco.log; TraditionalFormat

Однако, ip так и не подставился. Оказывается, наряду с HOSTNAME есть еще property FROMHOST (которую часто по ошибке пытаются прописать как FROMHOST-IP и получают **INVALID PROPERTY NAME** в логе).
Таким оразом, правильный конфиг таков:

# описываем темлейт
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag% %msg:::drop-last-lf%\n"
# и применяем его
local2.* /var/syslog/cisco.log; TraditionalFormat


А в самой верхней строчке, чтобы дата была в старом укороченном формате, желательно прописать:

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat