Splunk Log - 日期比较

时间:2017-01-23 12:30:16

标签: logging splunk splunk-calculation splunk-query

我已将应用程序日志配置为splunk,并希望执行以下操作 -

  1. 当字符串具有今天的日期时获取事件
  2. 当字符串有明天的日期时获取事件。
  3. 我曾尝试为#1编写如下查询,但它似乎没有返回任何内容

    REGAVAIL | eval Date=strftime(strptime(Date, "%m%d%Y"), "%m%d%Y") | where Date>= strftime(now(), "%m%d%Y")
    

    我的搜索字符串是REGAVAIL,所有事件都采用以下格式 -

    REGAVAIL | 00958645030 | 8871 | 1 | 61745 | 01262017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | O | O | O | 1013 | F REGAVAIL | 00958647200 | 8871 | 1 | 61745 | 01282017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | O | O | O | 1013 | F REGAVAIL | 00958649200 | 8871 | 1 | 61745 | 01292017 | 0 | N | N | Y | N | Y | N | N | O | O | O | O | O | O | O | 1013 | F

    我想首先从中提取日期 - 01262017然后将其与今天的日期进行比较。如果找到匹配项,则应考虑该事件。

    enter image description here

    任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

  1. 此搜索根据a创建两个字符串。 event _time和b。使用now()的当前日期。然后我们将创建一个名为match的新字段,其中包含Yes或No,表示事件_time是否与我们计算的相对时间相匹配。

    index=yourindex "REGAVAIL" | eval eventTime = strftime(_time, "%Y-%m-%d") | eval timeNow = strftime(relative_time(now(),"@d"), "%Y-%m-%d") | eval match=if(eventTime=timeNow, "Yes", "No") | search match="Yes"

  2. 第二次搜索几乎相同。我唯一改变的是发送到relative_time函数的参数。它现在设置为-1d @d,它返回昨天的日期。

    index=yourindex "REGAVAIL" | eval eventTime = strftime(_time, "%Y-%m-%d") | eval timeNow = strftime(relative_time(now(),"-1d@d"), "%Y-%m-%d") | eval match=if(eventTime=timeNow, "Yes", "No") | search match="Yes"

  3. 理论上你可以修改这个relative_time函数,看看提前2天,落后3天等等。

    希望这会有所帮助。如果你有任何问题,请大声喊。