Я работаю над централизацией своих журналов на сервере системных журналов, и у меня будут серверы fortigate и Windows (2016), отправляющие системные журналы на один сервер Linux, на котором работает rsyslog, и сохраняйте их в mysql.Я настроил fortigate для отправки системных журналов, но строки в mysql из fortigate не имеют одинаковых имен полей, поэтому данные не записываются во все столбцы в mysql.
Например, системный журнал с Linux-сервера содержит следующее:
2 ноября 11:15:25 ядро fps-linux-01: [3716995.353386] аудит: тип = 1400 аудит (1635869725.570:17): apparmor = "СТАТУС" операция = "profile_load" профиль = "неограниченный" имя = "/usr/ sbin/tcpdump" pid=25552 comm="apparmor_parser"
В результате поля базы данных «FromHost» имеют значение «fps-linux-01». Но запись из фортигейта гласит:
3 ноя 09:04:46 . date=2021-11-03 time=09:03:56 devname="Frederick-200F" devid="FG200FT920907269" eventtime=1635948236739611958 tz="-0500" logid="0000000013" type="traffic" subtype="forward" level="notice" vd="root" srcip=xxxxxxx srcport=59142 srcintf="lan" srcintfrole="lan" dstip=172.98.64.173 dstport=443 dstintf="port16" dstintfrole="wan" srccountry="Reserved" dstcountry ="Соединенные Штаты" sessionid=408405616 proto=6 action="start" policyid=8 policytype="policy" puluuid="2f7b990a-a844-51eb-73cf-8a7dcbe631da" policyname="Filter - Staff" user="xxxxxx" group ="xxxxxxxx" authserver="xxxx" service="HTTPS" trandisp="snat" transip=xxxxxxxxx transport=59142 продолжительность=0 sentbyte=0 rcvdbyte=0 sentpkt=0 rcvdpkt=0 appcat="unscanned"
Из этого FromHost пуст в БД, потому что (я предполагаю) запись fortigate имеет точку в поле имени хоста.
Вот относительные конфиги:
$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
. ?Удаленные журналы и ~
модуль (загрузить = "ommysql")
*.* action(type="ommysql" [Информация о соединении])
Я видел, что могу получить свойства сообщения и отформатировать его по мере необходимости, но выполнение на данный момент мне недоступно (то есть я не знаю, как это реализовать).
Вот мое лучшее предположение на данный момент, пожалуйста, исправьте все, что не так или отсутствует:
шаблон (имя = "RSYSLOG_StdFmt" тип = "список") {
свойство (имя = "имя_разработчика")
константа (значение = "")
свойство (имя = "тип")
константа (значение = ": ")
*** Поместите сюда остальную часть сообщения ****
}
Возможно ли, чтобы остальные данные после поля «тип» просто возвращались к выходным данным с этого момента? Если да, то как мне это сделать?
Это должно поместить запись в файл журнала, аналогичный собственному системному журналу. Поднимет ли rsyslog-mysql это и правильно поместит в базу данных, или мне нужно также создать специальный шаблон для mysql? Если да, то как применить мой шаблон только к журналам, поступающим из fortigate, а не к локальным записям или журналам с серверов Windows?