Добрый день, коллеги. Всех с наступающим праздником ДСА2018!!!
Помогите распарсить строку штатными стредствами regexp в rsyslog.
Есть логи маршрутизатора которые валятся на rsyslog вот примерно такого вида:
BLOCKSMKNETS forward: in:ether6 - Local TORF out:VLAN55 RT_INET, src-mac 5c:9a:d8:65:99:b7, proto TCP (SYN), 192.168.0.141:62632->192.168.6.18:65535, len 52
Средствами логгера надо отделить зерна от плевел и положить в БД. Например из части «in:ether6» надо убрать «in:», с помощью конструкции:
(?<=(in:))[a-x0-9]+
Тут получилось https://regex101.com/r/aznNLN/1
А тут не получается https://www.rsyslog.com/regex/
К сожалению на последнем сервисе нет возможности сохраниться поэтому покажу часть конфига rsyslog:
$template msgmake3,"msgmake3 %timereported:::date-mysql% %msg:R,ERE,0,BLANK:(?<=(in:))[a-x0-9]+--end%\n"
...
:msg, contains, "BLOCKSMKNETS" /var/log/remote/smtp.log;msgmake3
На выходе получаем:
msgmake3 20180726163813 **NO MATCH** **BAD REGULAR EXPRESSION**
В чем может быть дело? кто еще страдает такой фигней, как разбор логов на лету?