我想执行搜索,需要使用静态搜索字符串+带有用户名的csv文件中的输入:
搜索查询-
index=someindex host=host*p* "STATIC_SEARCH_STRING"
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,以减少工作量,并被困在这里。
提前谢谢!
答案 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。