Splunk - 查找值 + 静态搜索字符串 = 带计数的输出
Splunk - Lookup values + static search string = output with count
我想执行一个搜索,我需要使用静态搜索字符串 + 来自带有用户名的 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”的用户列表——我假设它是从 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 如果您需要更改子搜索的表达式格式,例如,在每个返回的表达式周围添加 *
。
我想执行一个搜索,我需要使用静态搜索字符串 + 来自带有用户名的 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”的用户列表——我假设它是从 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 如果您需要更改子搜索的表达式格式,例如,在每个返回的表达式周围添加 *
。