首页 > 解决方案 > 在 Splunk 多选中为每个项目设置一个标记

问题描述

我想为表单上多选输入中的每个项目设置一个布尔标记(选择/未选择)。我看到了一种解决方法(奇怪?)缺乏开箱即用的能力来做这样的事情: https ://community.splunk.com/t5/Dashboards-Visualizations/Hide-Display-Panels-Using-多选/mp/336502/highlight/true#M21830

我认为一个合理的简化是:

<fieldset>
  <input type="multiselect" token="item_selector" searchWhenChanged="true">
    <delimiter>,</delimiter>
    <choice value="item1">item1</choice>
    <choice value="item2">item2</choice>
  </input>
</fieldset>

<search>
  <query>
   eval data="$item_selector$"
   | eval show1=match(data,"item1")
   | eval show2=match(data,"item2")
  </query>
  <done>
    <condition>
      <set token="show1_token">$result.show1$</set>
      <set token="show2_token">$result.show2$</set>
    </condition>
   </done>
 </search>

我不相信这是有效的,因为:

  <row>
    <panel depends="$my_true$">
      <title>Panel 1</title>
      <html>$show1_token$</html>
      <html>$show1_token$</html>
    </panel>
  </row>

无论在多选中选择了哪些项目,都只需在仪表板上显示以下内容:

$show1_token$

$show2_token$

而我本来期望“真”或“假”的某种组合(取决于选择了哪些项目)。

他们称之为“虚拟搜索”——何时执行此搜索?

这是为每个项目设置布尔标记的合理方式(如果可以更正)吗?是否有替代方案(除了 javascript,因为我在此仪表板上没有权限)?

标签: splunksplunk-dashboard

解决方案


我对仪表板 XML 进行了一些更改,以解决您在“显示”面板中遇到的问题,现在当您更改multiselect输入中的选择时,它可以正确显示令牌值。试一试。

<dashboard>
  <label>Multiselect - Token Test</label>
  <fieldset>
    <input type="multiselect" token="item_selector" searchWhenChanged="true">
      <delimiter>,</delimiter>
      <choice value="item1">item1</choice>
      <choice value="item2">item2</choice>
    </input>
  </fieldset>
<search>
  <query>
   | makeresults
   | eval data="$item_selector$"
   | eval show1=toString(match(data,"item1"))
   | eval show2=toString(match(data,"item2"))
  </query>
  <done>
   <condition>
    <set token="show1_token">$result.show1$</set>
    <set token="show2_token">$result.show2$</set>
   </condition>
  </done>
 </search>
<row>
  <panel depends="$item_selector$">
  <title>Panel 1</title>
  <html>$show1_token$</html>
  <html>$show2_token$</html>
  </panel>
 </row>
</dashboard>

一旦用户从multiselect下拉列表中选择一个选项,就会执行搜索(虚拟搜索)。

声明中存在问题,eval因为 - “无法为字段分配布尔结果”。这就是我将布尔值从match函数转换为字符串的原因


推荐阅读