У меня есть сервер 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"
)