Как настроить rsyslog для отправки журналов от конкретной программы на удаленный сервер syslog?

У меня есть программа, которая выводит в системный журнал с заданным тегом / именем программы. Я хотел бы иметь возможность фильтровать трафик системного журнала из этой программы и отправлять его на удаленный сервер системного журнала, оставляя весь другой трафик системного журнала локальным.

Я могу отправить весь трафик на удаленный сервер с помощью

*.* @remote_server

Как его отфильтровать?

16
задан 11 September 2012 в 19:11

2 ответа

Конфигурационные файлы Rsyslog находятся в: /etc/rsyslog.d/*.conf

Rsyslog последовательно читает файлы conf, поэтому важно, чтобы вы называли свой конфигурационный файл так, чтобы конкретная конфигурация загружалась до того, как что-либо еще произойдет. Итак, назовите ваш файл, начиная с нуля, то есть 00-my-file.conf. Лучше создать новый файл, чтобы обновления и т. Д. Не перезаписывали вашу локальную конфигурацию.

Пример:

if $programname == 'programname' and $msg contains 'a text string' and $syslogseverity <= '6' then /var/log/custom/bind.log

Или, если вы просто хотите отменить определенные записи:

if $programname == 'programname' then ~

В вашем случае: (UDP)

[ 112]

Или (TCP)

if $programname == 'programname' then @@remote.syslog.server
& ~

& ~ означает дальнейшую остановку обработки совпадающих (только в предыдущей строке!) Записей.

Немного более общей информации:

Кроме того, всегда проверяйте, чтобы фильтры были на одной строке:

# Example: Log mail server control messages to mail-queue.log
if $hostname == 'titus'\
and $programname == 'smtp.queue.'\
and $syslogseverity <= '6' then /var/log/titus/mail-queue.log
& ~

Полезные фильтры:

$hostname
$programname
$msg
$syslogseverity

Операторы:

== (equals)
contains
and
or

Дополнительная информация: http://wiki.rsyslog.com/index.php/Configuration_Samples

0
ответ дан 11 September 2012 в 19:11

Мы также можем попробовать это. Это хорошо работает для меня.

$template Incoming-logs,"/var/log/testing_docker/%PROGRAMNAME%.log"
if $programname startswith 'docker' then -?Incoming-logs

ПРИМЕЧАНИЕ: здесь testing_docker владение папкой должно быть предоставлено пользователю системного журнала. Следуйте приведенной ниже команде, чтобы установить разрешения.

chown syslog:syslog testing_docker
0
ответ дан 11 September 2012 в 19:11

Другие вопросы по тегам:

Похожие вопросы: