Як налаштувати rsyslog для надсилання журналів із певної програми на віддалений сервер syslog?


17

У мене є програма, яка виводить в syslog із заданим тегом / назвою програми. Я хотів би мати можливість фільтрувати трафік syslog з цієї програми та відправляти його на віддалений сервер syslog, залишаючи весь інший трафік syslog локальним.

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

*.* @remote_server

Як я його фільтрую?


1
Це відповіло на моє запитання. stackoverflow.com/questions/4042115/ruby-syslog-custom-facility
Simmo

Відповіді:


37

Конфігураційні файли Rsyslog розташовані у: /etc/rsyslog.d/*.conf

Rsyslog читає конф-файли послідовно, тому важливо, щоб ви назвали свій конфігураційний файл, щоб певний конфігуратор завантажувався до того, як щось інше відбудеться. Отже, назвіть свій файл, починаючи з ведучого нуля, тобто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)

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

Або (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


1
чи можемо виправити розірване посилання?
Марк Уолш

1

Ми також можемо спробувати це. Це добре для мене.

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

ПРИМІТКА: тут testing_dockerправо власності на папки має бути надано користувачеві syslog. Для встановлення дозволів виконайте команду нижче.

chown syslog:syslog testing_docker
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.