我是个新手。我的要求是显示在网格下方。
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"
任何帮助都将不胜感激!!!
我会从_raw
或message
字段中提取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)