如何动态限制时间范围?

时间:2015-04-19 02:29:33

标签: search date-range splunk

我有两种来源类型:

A定义了活动时间段:

  

_time,entity,start_time,end_time,activity,...

B定义实体的2D位置:

  

_time,entity,x,y,....

现在我试图只提取B中所有在A中定义的时段内的实体的那些行,我该怎么做?我似乎无法与'join'命令进行比较?

1 个答案:

答案 0 :(得分:0)

你是对的,join在这里没有多大帮助。我发现在两个索引中匹配信息的splunk方法是从两个索引开始并操纵异构事件,就好像它们是单个索引一样。

在这种情况下,一种方法使用streamstats来生成非规范化的事件,以包括每个位置事件的相关活动字段。首先,确保索引A中的每个事件都将start_time视为_time字段。然后,使用streamstats使用start_timeend_timeactivity字段(应该来自索引B)填充每个事件,并使用{{1}的最新值1}}非null(应该来自索引A)。最后过滤掉entity>中的所有事件_time,这是任何位于活动窗口之外的位置事件。

end_time

请记住,此方法假定活动整齐有序,因此任何活动都不会与其他活动重叠。如果活动可以重叠,这将会有点棘手。

我有时使用的另一种方法是使用transaction代替index=A OR index=B | eval _time=coalesce(start_time, _time) | streamstats latest(start_time) as activity_start_time, latest(end_time) as activity_end_time, latest(activity) as activity by entity | where _time<=end_time 。这样可以更好地控制一个活动开始和结束时的逻辑,并为每个活动生成一个具有多值字段的事件。你想要从一个单一的点开始#34;如果你采取这条路线,每个位置的字段。