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
.
我是 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
.