在Splunk中为变量分配一个值,并在搜索中使用该值

时间:2019-10-30 09:31:09

标签: splunk

我有一个用例,我想根据条件将值设置为变量,然后在搜索命令中使用该变量。

示例:- 我要检查状况

    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

然后,结果是我得到了预期的输出。

2 个答案:

答案 0 :(得分:1)

您是否提取了字段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

答案 1 :(得分:0)

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="*")