The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Rsyslog парсинг CEF логов и занесение в БД."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Др. сетевые сервисы / Linux)
Изначальное сообщение [ Отслеживать ]

"Rsyslog парсинг CEF логов и занесение в БД."  +/
Сообщение от Slot (ok), 03-Дек-25, 15:23 
Доброго времени суток!
Задача в общем смысле стоит следующем - принимать логи в CEF формате и заносить в бд, но ещё до сохранения в БД возникают проблемы.
При приёме и сохранении в файл как RemoteLogs стандартным способом -

$template RemoteLogs,"/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs
& stop

Rsyslogd видимо применяет встроенный шаблон парсинга и сохраняет вот в таком виде(обрезал с конца)

2025-12-01T15:38:07-05:00 RIO-DZ-16-N1 CEF: 0|R&K|DEZ7000 V2|2.3.4-55|16|Opisanie signatury etc|10|devId=55567 start=1764592626000

То есть он парсит участок "CEF:" видимо как %syslogtag% и вставляет пробел после него. Если эту строку скормить нормализатору как
tail -n 1 ./CEF.log | lognormalizer -e json -r cef2.rb | jq .
где cat cef2.rb
rule=:%date:date-rfc5424% %host:word% %f:cef%%
то выдаёт следующее
{
  "originalmsg": "2025-12-01T15:38:07-05:00 RIO-DZ-16-N1 CEF: 0|R&K|DEZ7000 V2|2.3.4-55|16|Opisanie signatury etc|10|devId=55567 start=1764592626000",
  "unparsed-data": "CEF: 0|R&K|DEZ7000 V2|2.3.4-55|16|Opisanie signatury etc|10|devId=55567 start=1764592626000"
}
Если вручную удалить пробел между CEF: и 0 то выдаёт уже нормально
  "f": {
    "DeviceVendor": "R&K",
    "DeviceProduct": "DEZ7000 V2",
    "DeviceVersion": "2.3.4-55",
    "SignatureID": "16",
    "Name": "Opisanie signatury etc",
    ...

Пробовал прописывать в ruleset
action(type="mmnormalize" rulebase="cef2.rb")
action(type="omfile" file="/var/log/debugcef" template="cefdebug")
но там такая же история - пустые переменные :(
Видимо ещё до модуля mmnormalize в каком то input module вставляется этот пробел и весь парсинг CEF идёт на смарку. Проверял в дампе входящего трафика и там между CEF: и 0 пробела нет!
Уважаемые гуру rsysloga! Есть ли у кого опыт заставить rsyslog принимать CEF логи корректно? Вручную же через lognormalizer всё раскладывается успешно!

Ответить | Правка | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру