如何基于Token修改Splunk柱状图的整体颜色?
解决Splunk柱状图根据Token动态修改颜色的问题
问题根源
你原来的实现无效有两个核心原因:
charting.fieldColors是仪表板XML层面的配置项,无法引用搜索结果中生成的字段(比如你用eval生成的paint_chart)- 你在
chart命令前执行的eval会被chart聚合操作覆盖,paint_chart字段不会保留到最终搜索结果里,自然无法被配置项读取
正确实现方法
直接在charting.fieldColors中使用Splunk的Token条件语法,根据$fruit$的取值动态设置对应字段的颜色:
<panel> <chart> <search> <query> ....... | chart count by amount_DT | rename count AS "Number of fruit" ... </query> <earliest>-10d@d</earliest> <latest>now</latest> </search> <!-- 根据Token值动态设置柱状图颜色 --> <option name="charting.fieldColors">{"Number of fruit": "$case($fruit$==\"Apple\",\"#fc4103\",$fruit$==\"banana\",\"#f5db36\",$fruit$==\"grape\",\"#a536eb\")$"}</option> </chart> </panel>
关键说明
charting.fieldColors的格式是{"目标字段名": "颜色值"},这里的目标字段是你rename后的"Number of fruit",必须完全匹配(包括空格、大小写)- 使用
$case()函数在XML层面做条件判断:根据$fruit$的取值返回对应颜色,XML中的双引号需要转义为\" - 颜色值需要添加
#前缀,这是Splunk颜色配置的规范写法 - 确保
$fruit$Token的取值完全匹配Apple、banana、grape(注意大小写,Splunk Token匹配是区分大小写的)
内容的提问来源于stack exchange,提问作者Azin
相关产品推荐
相关产品推荐

