我正在摄取一个日志,最终在“AdditionalExtensions”字段中放置了很多好的数据。这是一个数据示例:
操作=允许;用户=test.test@test.com;SrcIpAddr=192.168.1.146;SrcPortNumber=64694
我试图弄清楚是否有办法,一旦我 split(AdditionalExtensions,";") 将 split() 函数产生的字符串数组转换为一个属性包,然后遍历它的键,有点什么在 python 中是:
for k,v in mydict:
print(f'{k}= {v}')
但当然,我必须将其密钥扩展到例如 Action、User、SrcIpAddr、SrcPortNumber,这样我最终可以得到类似的结果:
| extend Action = loopThrough1stIteminDict[v],
User = loopThrough2ndIteminDict[v]
| project Action, User
最终结果是:
Action User
Allow test.test@test.com
如果这是不可能的,那么在 KQL 中更有效的是使用这个:
| extend parser = split(AdditionalExtensions,";")
| extend Action = extract("=(.*)",1,tostring(parser[0])),
或者不使用extract(),而是使用substring(),而是使用indexof()来告诉子字符串我想从等号所在的索引开始,然后到字符串的末尾
AdditionalExtensions 字段中有大约 30-40 个字段,我希望对重要的日志进行彻底的处理,我可能需要及时返回很多时间,我不希望返回 2 小时的查询停止,更不用说必须回溯 7 天或更长时间,KQL 在回溯时失败了很多,当然不像 Splunk,但我现在正在开发这个产品。