Splunk中令牌非空时编辑搜索查询失败求助
Splunk 动态Stats分组查询实现方案
直接利用Splunk的计算令牌特性来实现动态添加by子句,步骤如下:
- 定义计算令牌
在仪表盘的「令牌管理」中新增一个计算令牌(比如命名为stats_by_clause),设置其逻辑:
- 当复选框令牌
$filtre$非空时,令牌值为by $filtre$ - 当
$filtre$为空时,令牌值为空字符串
- 修改搜索语句
将原搜索替换为:
index="fortigate" policyid=$policy$ $scr_dest$=$IP$ service=$service$ NOT action = blocked | stats values(src_ip) values(dest_ip) values(service) values(action) $stats_by_clause$
替代方案(内联条件拼接)
如果不想新增计算令牌,也可以直接在搜索中用Splunk的条件语法拼接:
index="fortigate" policyid=$policy$ $scr_dest$=$IP$ service=$service$ NOT action = blocked | stats values(src_ip) values(dest_ip) values(service) values(action) `if(len($filtre$)>0, "by $filtre$", "")`
为什么之前的方法无效
by *:会按所有字段分组统计,并非不分组的效果by null:Splunk不识别null作为分组字段,会直接报错eval/multisearch:这类方法多在搜索执行阶段生效,但令牌替换是在搜索解析阶段完成,动态逻辑无法正确触发
内容的提问来源于stack exchange,提问作者Sthefania Moreno Reina
相关产品推荐
相关产品推荐

