为 Splunk 中的变量赋值并在搜索中使用该值
Assign a value to the variable in Splunk and use that value in the search
我有一个用例,我想根据条件将值设置为一个变量,并在搜索命令中使用该变量。
例子:-
我想检查条件
if account_no=818
then var1="vpc-06b"
else var1="*"
我试过了
...|eval val1=case(acc_no==818,"vpc-06b",acc_no!=818,"*")|search vpc_id=val1
但我没有收到任何事件。如果我正在尝试
...|search vpc_id=vpc-06b
然后,结果,我得到了预期的输出。
您是否提取了 vpc_id
字段?如果您执行搜索 ... | stats count by vpc_id
,您会得到按 vpc_id
拆分的结果吗?
我问这个的原因是你的第二个搜索应该不起作用,...|search vpc_id=vpc-06b
。如果您提取了字段,我期望的是 ...|search vpc_id="vpc-06b"
。如果第二种情况有效,那么您使用 case
语句的逻辑是正确的。
我假设该字段未正确提取。在这种情况下,我建议您尝试以下操作。我使用 rex
命令强制提取字段,然后在比较中使用它。
... | rex field=_raw "vpc_id=(?<vpc_id>\S+)" | eval val1=case(acc_no==818,"vpc-06b",acc_no!=818,"*") | where vpc_id=val1
index=... (acc-number=818 AND (vpc_id="vpc-078" OR vpc_id="vpc-02c" )) OR (acc-number!=818 AND vpc_id="*")
(您实际上并不需要 AND
,我只是将它们包括在内以使其更清楚。以下也是可以接受的。
index=... (acc-number=818 (vpc_id="vpc-078" OR vpc_id="vpc-02c" )) OR (acc-number!=818 vpc_id="*")
我有一个用例,我想根据条件将值设置为一个变量,并在搜索命令中使用该变量。
例子:- 我想检查条件
if account_no=818
then var1="vpc-06b"
else var1="*"
我试过了
...|eval val1=case(acc_no==818,"vpc-06b",acc_no!=818,"*")|search vpc_id=val1
但我没有收到任何事件。如果我正在尝试
...|search vpc_id=vpc-06b
然后,结果,我得到了预期的输出。
您是否提取了 vpc_id
字段?如果您执行搜索 ... | stats count by vpc_id
,您会得到按 vpc_id
拆分的结果吗?
我问这个的原因是你的第二个搜索应该不起作用,...|search vpc_id=vpc-06b
。如果您提取了字段,我期望的是 ...|search vpc_id="vpc-06b"
。如果第二种情况有效,那么您使用 case
语句的逻辑是正确的。
我假设该字段未正确提取。在这种情况下,我建议您尝试以下操作。我使用 rex
命令强制提取字段,然后在比较中使用它。
... | rex field=_raw "vpc_id=(?<vpc_id>\S+)" | eval val1=case(acc_no==818,"vpc-06b",acc_no!=818,"*") | where vpc_id=val1
index=... (acc-number=818 AND (vpc_id="vpc-078" OR vpc_id="vpc-02c" )) OR (acc-number!=818 AND vpc_id="*")
(您实际上并不需要 AND
,我只是将它们包括在内以使其更清楚。以下也是可以接受的。
index=... (acc-number=818 (vpc_id="vpc-078" OR vpc_id="vpc-02c" )) OR (acc-number!=818 vpc_id="*")