Фильтр Rsyslog по клиенту
Я настроил сервер Rsyslog, который может получать сообщения от клиентов. Проблема в том, что все объединено в / var / log / syslog, поэтому я пытаюсь настроить фильтр на стороне сервера.
Я добавил эту строку в конце /etc/rsyslog.conf
:
if $fromhost-ip == '123.123.123.123' then /var/log/clientA.log
Но это не работает вообще (даже если я заменю ==
от !=
что действительно странно). Конечно, я не забыл перезапустить службу.
Любая идея приветствуется.
2 ответа
Решение
Теперь это работает. Это была проблема с разрешением. я сделал touch
а также chmod
на файл журнала, чтобы исправить это.
В нашем конфиге есть дополнительная проверка ошибок, предотвращающая генерацию журналов случайными хостами.
# Templates
$template RemoteHost,"/data/log/remote/%HOSTNAME%/%$YEAR%/%$MONTH%-%$DAY%.log"
$template Garbage,"/data/log/remote/GARBAGE/%HOSTNAME%/%$YEAR%/%$MONTH%-%$DAY%.log"
# Discard SNMPD Connection Messages
if $programname == 'snmpd' and ( $msg contains 'Connection from UDP' or $msg contains 'Received SNMP packet(s) from UDP' ) then ~
# Archival Storage
# All Messages, locally and remote stored to these rules
if $hostname contains '.mydomain.com' or $hostname contains '.myotherdomain.com' or $hostname contains '.local' then {
*.* ?RemoteHost
} else {
*.* ?Garbage
}
# If not sourced locally, stop processing message.
:source , !isequal , "syslog1" ~