Splunk - 跨多个查询共享数据集

Splunk - Share data set across multiple queries

我在 Splunk 索引中有事件日志。我想根据上周的 statusCode 获取 a) 成功请求和 b) 失败请求的数量。但是,我想显示每一天的数量。

根据我的理解,我可以使用如下方式执行昨天的查询:

index="my_index" 
sourcetype="*" 
_raw="*execTime*" 
earliest=-1d@d
latest=now 
| fields _time requestUrl statusCode
| stats
  count(eval(statusCode<200 OR statusCode>299)) as failures
  count(eval(statusCode>199 AND statusCode<300)) as successes
  by requestUrl 
| table requestUrl failures successes

这将为我提供昨天每个请求 url 的总成功和失败总数。我可以复制此查询并更改每天的 earliest 字段值。但是,似乎有两种更好的方法:

  1. 将此查询另存为报告并将 earliest 值作为参数传递。这将需要七个单独的搜索请求(每天一个)或
  2. 运行 一个获取一周所有事件的查询。然后,运行 查询该查询的结果。每天一个查询。我们的想法是,这将减少需要评估的事件集。

后者似乎更有效率。但是,我不知道这是否可能。我的问题是,是否可能,如果可能的话如何?它实际上更有效吗?

谢谢

是的,这两种方式都可以完成,但是 运行 一周的单个查询并让 Splunk 按天将它们分开会更容易。

index="my_index" sourcetype="*" _raw="*execTime*" earliest=-7d@d latest=@d 
| fields _time requestUrl statusCode
```Separate the events into days by rounding _time to the beginning of the day```
| bin span=1d _time
```Count events by day and statusCode```
| stats
  count(eval(statusCode<200 OR statusCode>299)) as failures
  count(eval(statusCode>199 AND statusCode<300)) as successes
  by _time,requestUrl 
| table _time requestUrl failures successes

顺便说一句,构造 earliest=-1d@d latest=now 搜索了昨天和今天。要仅搜索昨天,请使用 earliest=-1d@d latest=@d.