[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: rsyslog с его шаблонами



On 2015-07-23 1106 (+0600), Anton wrote:
Добрый день.

Есть проблема следующего плана: имеется debian 7.8, в нём rsyslog версии 5.8.11-3+deb7u2. Нужно принимать сообщения по
сети от различных устройств, записывать их в отдельные файлы и вставлять в начало каждой строки локальное время
сервера. Т.е. обычно в сообщениях syslog имеется timestamp, но не на всех устройствах настроено ntp и есть устройства,
которые шлют сообщения вообще без timestamp. Поэтому верить присылаемым данным нельзя, хотя их тоже можно записыватьв
лог.

Не могу настроить, чтобы все условия одновременно работали.

Работает вот такой темплейт:

$template SW,"/var/log/network-logs/%fromhost%-%fromhost-ip%.log"

if $fromhost-ip startswith '172.16.' then -?SW
& ~

Вроде пишет раздельно по файлам, но когда я пытаюсь добавлять время, то ничего не работает и не пишет.

Пробовал вот так:

$template SW,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"

это почти копия примера документации, но вообще ничего не пишет так.

В более новых версиях rsyslog синтаксис отличается, но мне надо на указанной версии работать - дистрибутив же.

Как одновременно и по файлам динамически раскидывать и время сервера вставлять и версию не менять ?

Предположу, что это из-за одинакового названия (SW) у двух разных
шаблонов, для имени файла и формата записи.

У меня сделано вот так:

$template tcpfilename,"/var/log/remote/%hostname%/%syslogfacility-text%.log"
$template tcpreceive,"%TIMESTAMP:::date-rfc3339%\9%syslogfacility-text%\9%syslogseverity-text%\9%fromhost%[%fromhost-ip%]\9%HOSTNAME%\9%syslogtag%\9%msg:::drop-last-lf%\n"
if $fromhost-ip != '127.0.0.1' then -?tcpfilename;tcpreceive

Попробовал заменить TIMESTAMP на %timegenerated:::date-rfc3339% - продолжает
писать нормально.


Reply to: