Как получить доступ к данным в строке через KQL - PullRequest
0 голосов
/ 07 мая 2020

Здесь новичок в KQL - у меня есть несколько журналов CEF, попадающих на один из моих серверов, и мне нужно получить доступ к данным, чтобы получить от них какие-то содержательные отчеты.

Возьмите этот журнал - не json, просто строку

CEF:0|vendor1|vendorproduct|1.0|Event1|Event2|1|source_ip=0.0.0.0 rt=2020-04-28T04:17:05.475Z data1=example1 group=example2 endpoint=55555555 user=444444

Я хочу получить доступ к каждому полю и сохранить как var для дальнейшего использования запроса. Как лучше всего добиться этого, чтобы получить такие результаты, как показано ниже? Регулярное выражение? Строковые функции?

 | extend vendorname =    // = vendor1
 | extend source_ip =     // = 0.0.0.0
 | extend endpoint =      // = 55555555
// etc

1 Ответ

2 голосов
/ 07 мая 2020

Хорошо, я понял это - см. Ниже, чтобы KQL достиг того, что я искал:

Syslog 
 | where SyslogMessage has "vendor-name"
 | extend logs = split(SyslogMessage, "|") 
 | extend vendor = logs[1]
 | extend app = logs[2]
 | extend version = logs[3]
 | extend event = logs[4]
 | extend msg = logs[5]
 | parse SyslogMessage with * "source_ip=" source_ip "rt=" rt " id=" id " data1=" data1 " group=" group " endpoint=" endpoint "user=" user 
 | project vendor, app, version, event, msg, rt, data1, source_ip, id, group, endpoint, user
...