【问题标题】:Query for calculating duration between two different logs in Splunk在 Splunk 中计算两个不同日志之间持续时间的查询
【发布时间】:2020-04-22 06:30:07
【问题描述】:

作为我要求的一部分,我必须使用 Splunk 查询计算两个不同日志之间的持续时间。 例如:

日志 2: 2020-04-22 13:12 ADD 请求收到 ID : 123

日志 1: 2020-04-22 12:12 REMOVE request received ID : 122

两个日志之间的公共字符串是“request received ID:”,两个日志之间的唯一字符串是“ADD”、“REMOVE”。预计输出时长为 1 小时。

任何帮助将不胜感激。谢谢

【问题讨论】:

    标签: splunk splunk-query


    【解决方案1】:

    您可以使用transaction 命令,https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Transaction

    假设您已提取字段ID,您可以这样做

    index=* | transaction ID
    

    这将自动生成一个名为duration 的字段,它是具有相同ID 的第一个事件和最后一个事件之间的时间

    【讨论】:

      【解决方案2】:

      虽然transaction 工作,但它非常效率低下

      这个stats 应该向您展示您要查找的内容(假设这些字段已被提取):

      (index=ndxA OR index=ndxB) ID=* ("ADD" OR "REMOVE")
      | stats min(_time) as when_added max(_time) as when_removed by ID
      | eval when_added=strftime(when_added,"%c"), when_removed(when_removed,"%c")
      

      如果您没有已经提取了字段,则需要进行相应的修改(如果 ID 值不在行):

      (index=ndxA OR index=ndxB) ("ADD" OR "REMOVE")
      | rex field=_raw "ID \s+:\s+(?<ID>\d+)\D^"
      | stats min(_time) as when_added max(_time) as when_removed by ID
      | eval when_added=strftime(when_added,"%c"), when_removed(when_removed,"%c")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-28
        • 1970-01-01
        • 2020-06-28
        • 1970-01-01
        • 2017-05-02
        相关资源
        最近更新 更多