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

Splunk - Lookup values + static search string = output with count

我想执行一个搜索,我需要使用静态搜索字符串 + 来自带有用户名的 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”的用户列表——我假设它是从 table 本身获取的。

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

有人可以帮我解决这个问题吗? 对不起,如果这是一个菜鸟问题,我一直在尝试学习 splunk 以减少我的工作量,但我被困在这里了。

提前致谢!

我认为您正在彻底搜索

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

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

如果我正确理解你的问题,你想在查找中使用 作为数据过滤器(即,仅在 User 所在的位置列表)

如果是这样的话,以上就可以了

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

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

这里发生的事情是有一个子搜索,它对 users.csv 文件进行输入查找。然后我们使用 fields 来确保数据中只有一个字段 (UserList)。然后我们将该字段重命名为 query。这是子搜索中的一个特殊字段;子搜索returns字段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 如果您需要更改子搜索的表达式格式,例如,在每个返回的表达式周围添加 *