【问题标题】:Extract/filter Splunk Query and for conditional logic提取/过滤 Splunk 查询和条件逻辑
【发布时间】:2021-05-18 14:35:11
【问题描述】:

我主要使用基本的 Splunk 查询,例如

index=myIndexHere source="path/to/logs/app.log" "Keyword to Filter Query On Example"

我的问题是,我想查找具有名为"Time taken:" 的值的日志。好的,那太好了——根据我上面写的,我知道该怎么做。我在 Splunk 中得到了一堆搜索结果,即 JSON 样式(这是从我的 Java Spring Boot 应用程序记录的),即

Object state is { "key1": "value",
  "key2": "value",
  "key3": "value"
}, Time taken: 500 ms

所以它是某种类似的格式。如何过滤/提取"Time taken:" VALUE(只是数字部分)并执行“> 1000ms”之类的简单逻辑条件,这样我只能得到大于 1000 毫秒的搜索结果?

【问题讨论】:

    标签: java spring-boot splunk


    【解决方案1】:

    一种方法是使用rex 命令。 rex 将捕获组提取到字段中,然后可以使用其他 SPL 命令进行处理。

    index=myIndexHere source="path/to/logs/app.log" "Keyword to Filter Query On Example" "Time taken"
    | rex "Time Taken:\s(?<timeTaken>\d+)"
    | where timeTaken > 1000
    

    此查询假定所用时间字段始终为毫秒。如果它可以更改,那么查询将变得更加复杂。

    【讨论】:

    • 看起来我没有得到任何结果。我认为 REGEX 不匹配,因为使用“所用时间”运行基本查询会返回我在上面的问题中发布的内容,这就像 Object 类的 JSON 字符串日志,那么接近尾声的是“所用时间” .我不认为正则表达式匹配
    • 会是数字末尾的“ms”吗?
    • 请发布查询index=myIndexHere source="path/to/logs/app.log" "Keyword to Filter Query On Example" "Time taken"的一两个结果
    • “示例中过滤查询的关键字”是多余的吧?因为我想要进行的过滤是在字符串“所用时间”上(是我过滤的内容)。无论如何,“所用时间”的查询结果将如下所示(为清楚起见,请参阅下面的下一条评论):
    • 0e685a643892 2021-06-04 20:24:32.267 信息 randomGeneratedUUID=c786d054-e867-40d6-b876-39472135b2f1 [http-nio-8080-exec-8] com.mypackage.demo.MyMethod -请求完成 - 对象 ReferenceId 为:null,对象信息为:class Employee { firstName:null lastName:null dateOfBirth:null postalCode:null },所用时间:3893 ms
    猜你喜欢
    • 2014-11-03
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多