Splunk-查找值+静态搜索字符串=带有计数的输出

时间:2020-04-17 16:49:42

标签: splunk splunk-query

我想执行搜索,需要使用静态搜索字符串+带有用户名的csv文件中的输入:

  1. 搜索查询- index=someindex host=host*p* "STATIC_SEARCH_STRING"

  2. users.csv中的值,列表如下所示-请注意,User / UserList不是我的Splunk中的字段**UserList** User1 User2 User3 . . UserN

我尝试使用其中的多个- | inputlookup users.csv | join [search index=someindex host=host*p* "STATIC_SEARCH_STRING"] | lookup users.csv UserList OUTPUT UserList as User| stats count by User

以上只是输出计数为“ 1”的用户列表-我认为它是从表本身获取的。

当我尝试搜索单个用户的事件时,例如- index=someindex host=host*p* "User1" "STATIC_SEARCH_STRING"。我为该用户获得了100项事件。

有人可以帮我吗? 抱歉,如果这是一个菜鸟问题,我一直在尝试学习splunk,以减少工作量,并被困在这里。

提前谢谢!

2 个答案:

答案 0 :(得分:0)

我认为您正在进行由内而外的搜索

认为您可能想要的是以下内容:

index=ndx sourcetype=srctp host=host*p* User=*
| search 
    [| inputlookup users.csv ]
| stats count by User

如果我正确理解了您的问题,则希望在查询中使用作为数据的过滤器(即,仅User在该列表中)

如果是这种情况,上面的操作就可以做到

如果由于查找表具有不同的名称而需要使字段名称匹配,请将子搜索更改为以下内容:

    [| inputlookup users.csv
     | rename lookup_field_name as User ]

答案 1 :(得分:0)

index=someindex host=host*p* "STATIC_SEARCH_STRING" [ | inputlookup users.csv | fields UserList | rename UserList as query]

这里发生的是有一个子搜索,该搜索在users.csv文件上进行输入查找。然后,我们使用fields确保数据中只有一个字段(UserList)。然后,我们将该字段重命名为query。这是子搜索中的一个特殊领域。当子搜索返回字段query时,它将扩展为表达式(field_value_1) OR (field_value_2) OR ...

此表达式随后附加到原始搜索字符串,因此Splunk执行的最终搜索为index=someindex host=host*p* "STATIC_SEARCH_STRING" ("alice") OR ("bob") OR ("charlie")

此方法概述于https://docs.splunk.com/Documentation/Splunk/8.0.3/Search/Changetheformatofsubsearchresults

如果您需要更改子搜索的表达式格式,例如,在每个返回的表达式周围添加*,也可以查看Splunk格式命令https://docs.splunk.com/Documentation/Splunk/latest/SearchReference/Format