Splunk 将第二个查询结果(字段)带入第一个查询 Linux 主机的内存百分比

Splunk to take the second queries result(field) into first query for Percentage Memory of Linux host

我是 SplunK 的新手。

我正在尝试拉取我的 Linux 主机的 Memory %,这些主机属于一个名为 Database_hosts 的特定组。

如果我将特定主机的 Memory % 显式提供为 host="host01.example.com",我可以获得该主机的 Memory % 但是,我正在寻找针对多个主机的 运行 此查询。

属于 Database_hosts 组的多个主机我可以从 Splunk 中的 inputlookup cmdb_host.csv 中提取。

现在,我可以从 inputlookup cmdb_host.csv 中提取主机,它包含 name 字段中的主机,但我不知道如何将我的第二个查询放入我的第一个查询中,即 sourcetype=top pctMEM=* host="host01.example.com"

虽然这两个查询独立工作。

我的第一个查询:

sourcetype=top pctMEM=* host="host01" OR host="host02"
| multikv 
| dedup host
| rex field=pctMEM "(?<usage>\d+)" 
| where usage> 40
| table  host pctMEM

运行 的结果:

这是我的第二个查询:

| inputlookup cmdb_host.csv
| search support_group="Database_hosts" NOT (fqdn IN("ap*", "aw*",""))
| table name

运行 的结果:

如何将我的第二个查询输出字段 name 用于第一个查询的 host= 字段?

任何帮助将不胜感激。

编辑:刚试过但没有成功:

sourcetype=top pctMEM=* host="[inputlookup cmdb_host.csv where support_group="Database_hosts" | table name] 
| multikv 
| dedup name
| rex field=pctMEM "(?<usage>\d+)" 
| where usage>20
| table  name pctMEM

你非常接近。如果您单独 运行 子搜索(方括号内的部分)并添加 | format 那么您将看到 return 编辑到主搜索的内容。它看起来像 ((name=host01) OR (name=host02))。将其与主要搜索相结合产生:

sourcetype=top pctMEM=* host=((name=host01) OR (name=host02))
| multikv 
| dedup name
| rex field=pctMEM "(?<usage>\d+)" 
| where usage>20
| table  name pctMEM

这行不通。可以通过在子搜索中将 name 重命名为 host 并让子搜索创建表达式来修复它。

sourcetype=top pctMEM=* [|inputlookup cmdb_host.csv where support_group="Database_hosts" 
  | return 100 host=name]
| multikv 
| dedup name
| rex field=pctMEM "(?<usage>\d+)" 
| where usage>20
| table  name pctMEM

return 命令告诉 Splunk return 最多 100 个结果并将 name 重命名为 host。相当于fields name | rename name as host | format.