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

Как редактировать отправку сообщений с помощью Rsyslog?

У меня есть сервер rsyslog, который отправляет сообщения.

Интересно, могу ли я редактировать какие-либо данные, которые я пересылаю?

Другими словами, один из отправляемых мной журналов содержит следующую информацию:

<13>Nov 29 08:00:00 localhost CEF: 0|212|656|1|1|Bot Access Control|4| fileId=739000180002315518 sourceServiceName=

И мне было бы интересно, например, изменить имя хоста. С localhost на HOST01

<13>Nov 29 08:00:00 HOST01 CEF: 0|212|656|1|1|Bot Access Control|4| fileId=739000180002315518 sourceServiceName=

Я не контролирую, где получаются логи, только доставку.

Вы можете сделать это, используя заменители собственности работает над msg свойство, предполагая, что именно здесь строка localhost находится.

Положите в свой rsyslog.conf или аналогичная линия, определяющая шаблон позвонил, скажем, newmsg:

$template newmsg,"%timestamp% %programname% %msg:R,ERE,1:(.*) localhost --end% HOST01 %msg:R,ERE,1: localhost (.*)--end%\n"

Чтобы сделать это более читабельным, здесь он разбит на несколько строк, но вы должны использовать приведенную выше версию:

$template newmsg,
 "%timestamp% %programname% 
  %msg:R,ERE,1:(.*) localhost --end%
  HOST01 
  %msg:R,ERE,1: localhost (.*)--end%
 \n"

Он содержит 2 использования такого заменителя: %msg:R,ERE,1: ...(...)... --end% где %msg% это свойство, используемое в качестве входных данных для регулярного выражения R, расширенное регулярное выражение ERE, оставьте только группу захвата 1, за которой следует шаблон регулярного выражения, который имеет группу захвата (), с заместителем, заканчивающимся на --end.

Поскольку этот шаблон всегда добавляет слово HOST01 к сообщению, вы должны использовать его только в том случае, если сообщение действительно содержит localhost, поэтому отредактируйте действие, в котором вы регистрируете сообщение, чтобы проверить это, например:

:msg, contains, " localhost "      -/var/log/test.log; newmsg

Обратите внимание на использование шаблона в конце: ; newmsg.


Вы также можете использовать шаблоны при отправке на удаленный компьютер, например:

action(type="omfwd" 
 Target="server.example.net"
 Port="10514"
 Protocol="tcp"
 Template="newmsg"
)