splunk查询从单个字段中提取多个字段



我是个新手。我的要求是显示在网格下方。

Method                       Execution Time
IndexController.printHello     519 

我的事件字符串低于

{ "event" : "test", "message" : "OUT: IndexController.printHello - time taken: 519 ms"}

我尝试了以下方法

index = "myspluk" | table message | field method, executiontime

但它显示的是空信息。我创建了字段提取器,但它不工作

我想从中提取方法和执行时间

"OUT: IndexController.printHello - time taken: 519 ms"

任何帮助都将不胜感激!!!

我会从_rawmessage字段中提取rex和一些正则表达式捕获组所需的内容:

index = "myspluk" 
| rex field=_raw "OUT: (?<method>.*?) - time taken: (?<executiontime>d+) ms" 
| table method executiontime

@Mads-Hansen的答案很可能会奏效,但经验表明,多个单独的rex语句更安全(即,它们允许不同序列中的角落案例/数据等(:

| rex field=message "OUT:s+(?<method>S+)"
| rex field=message "taken:s+(?<executiontime>d+)"

顺序正则表达式的速度-9&23个步骤,分别为

如果你想使用一个一次性正则表达式,因为你知道数据总是按相同的顺序排列,这个表达式比Mads-Hansen的更简单、更快(28步对82步(:

| rex field=message "OUT:s+(?<method>S+).+?taken:s+(?<executiontime>d+)"

最后,如果你知道message字段的顺序总是相同的,你可以这样做,制作一个多值字段,然后将其分离(我将两个eval语句组合成一行,因为它们不相互依赖(:

| rex field=message max_match=0 ":s+(?<mymvfield>S+)
| eval method=mvindex(mymvfield,0), executionTime=mvindex(mymvfield,-1)

最新更新