Доброго всем времени суток! Может быть кто-то сталкивался с этим, поможет, честно сказать я уже встал в тупик.
Задача: Взять любой лог, пусть будет nginx access_log, отдать его rsyslog в последнем подключить lognormalizer который переведет стандартный в json. А далее после нормализации просто записать его в отдельный файл.
Что я делаю:
- Создаю дополнительную конфигурацию для моего лога:
cat /etc/rsyslog.d/60-nginx.conf 
module(load="imfile")
module(load="mmnormalize")
input(type="imfile"
      ruleset="nginx_parser"
      File="/var/log/nginx/access.log"
      tag="nginx"
)
ruleset(name="nginx_parser") {
    action(type="mmnormalize" rulebase="/home/yakunin/docker/nginx-rsyslog/nginx.rb" )
    action(
      type="omfile"
      dirCreateMode="0700"
      FileCreateMode="0644"
      File="/var/log/nginx/rsys_access.log"
      )
}
Далее сам файл правил:
cat nginx.rb 
version=2
rule=:%clientip:word% %forward_for:word% %source:word% [%timestamp:char-to:]%] "%method:word% %request:word% HTTP/%httpversion:float%" %response:number% %bytes:number% "%referrer:char-to:"%" "%agent:char-to:"%"%blob:rest%
Далее, иду на nginx делаю запрос, в access_log прилетает строка, я проверяю работу своего парсера:
head -1 /var/log/nginx/access.log | lognormalizer -r nginx.rb -e json | jq
{
  "blob": "",
  "agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36",
  "referrer": "-",
  "bytes": "5",
  "response": "200",
  "httpversion": "1.1",
  "request": "/",
  "method": "GET",
  "timestamp": "26/May/2022:14:08:33 +0000",
  "source": "-",
  "forward_for": "-",
  "clientip": "192.168.112.1"
}
Все работает, то есть правила и нормализация проходят хорошо. Но когда я иду в файл /var/log/nginx/rsys_access.log туда прилетает не нормализованный лог, а снова обычная строка, как бы из access_log в rsys_access.log
Что я хочу, что бы в rsys_access.log уже прилетал json. Да, пожалуйста не надо писать что nginx может сразу писать в json. Я в курсе. Тут дело именно заставить rsyslog делать это. Nginx просто для примера.
