Назад | Перейти на главную страницу

Как вызвать шаблон, чтобы rsyslog 8 создавал один файл журнала для каждого клиента

я использую rsyslog 8.22 для получения данных системного журнала, отправленных с клиентских хостов. Моя цель - создать по одному файлу журнала для каждого клиента.

Я нашел много данных о старых версиях rsyslog, но изменение синтаксиса конфигурации меня сбило с толку.

Эта конфигурация доказывает, что rsyslog работает, но объединяет все записи в один файл:

if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" file="/var/log/network.log")
    stop
}

(Остальные мои /etc/rsyslog.conf по умолчанию.)

Следующее не работает. (Файл не создается):

template (name="DynFile" type="string" string="/var/log/network-%fromhost-ip%.log")
if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" file="DynFile")
    stop
}

Что мне не хватает?

Исправление заключается в том, чтобы указать dynaFile в действие аргумент (не file).

template (name="DynFile" type="string" string="/var/log/network-%fromhost-ip%.log")
if $fromhost-ip startswith '192.168.117.' then {
    action(type="omfile" dynaFile="DynFile")
    stop
}

Это дает ожидаемые результаты:

$ ls -l /var/log/network/    
-rw-r--r--. 1 root root       286 Oct  4 13:21 192.168.117.21.log    
-rw-r--r--. 1 root root       284 Oct  4 13:25 192.168.117.22.log
-rw-r--r--. 1 root root       184 Oct  4 13:32 192.168.117.27.log
$