Форматировать сообщения rsyslog - удалить IP лог сервера - PullRequest
0 голосов
/ 13 сентября 2018

Наш Archive-сервер получает журналы, отправленные несколькими Log-серверами - они записывают свой IP в каждом сообщении, которое они отправляют на Archive-сервер.Теперь я хотел «вырезать» их IP-адрес и «src @» из каждого Logmessage с помощью конфигурации rsyslog моего Archive-сервера.

Пример:

192.168.0.12 - один из моихЛог-сервер |Foo - это «настоящий» Source-IP, переведенный в его DNS-имя

  • неправильно [23 августа 10:00:01 192.168.0.12 src @ Foo logdata logdata]

  • вправо [23 августа 10:00:01 Foo logdata logdata]

Сначала я подумал, что могу использовать «ПОЛЯ» и пробел в качестве разделителя, ноЯ думаю, что я бы сократил DNS-имя моего реального Source-IP, когда я хотел удалить src @.Хотелось бы пойти с sed, если это возможно, но я не знаю, как реализовать это в моем rsyslog.conf

sed 's/\(192.168.0.12 @src\)//'

.

_________ ОБНОВЛЕНИЕ ________

Тамявляется многообещающей функцией под названием «замена», но я не могу заставить ее работать вообще.

https://www.rsyslog.com/doc/v8-stable/rainerscript/functions.html#replace-str-substr-to-replace-replace-with

if ( $fromhost-ip == '192.168.0.12' ) then {

   replace($msg, "@src", " ")
   -/var/log/foo.log
   stop
}

Msgs написаны с использованием foo.log - ноничего не заменено

1 Ответ

0 голосов
/ 21 сентября 2018

У меня все работает с шаблоном.Поскольку лог-сервер вставляет свой собственный IP, я могу просто «удалить»% hostname%, и все готово.

template template_name,"%timegenerated% %progname% %msg%"   
if fromhost-ip == '192.168.0.12' then {   
   /var/log/foo.log,template_name   
   stop

}
...