🎉

Splunk Dashboard tokenの細かい話(サーチ内での取扱の話)

2021/06/16に公開

トークン話第二弾

https://zenn.dev/nfwork01/articles/0b4018c532d79d の続きです。
どちらかといういとlookuptableのノウハウになってくるんですが、まぁtokenというお題目でまとめます。

tokenを使ったサーチ

具体例

以下みたいな感じです。

<dashboard>
<label>lookup_reset</label>
<init>
  <set token="filter">| where action="search"</set>
</init>
<row>
  <panel>
    <table>
      <search>
        <query>
| from datamodel:"internal_audit_logs.Audit" 
$filter$
| table _time host, action, info, sorce, user
        </query>
      </search>
    </table>    
    
  </panel>
</row>
</dashboard>

サーチ文の中にtokenで検索条件を動的に打ち込むことができます。

トークンが未定義な場合の動き

上記の例の、initの中の処理を削除して、$filter$が未定義になっている状態でサーチがかかるようにしてみます。

はい。
「サーチ入力待ち」と表示されます。
内部的にサーチは走ってない(はず)です。

トークンが定義されたときの動き

$filter$に値が入るたびに、サーチが実行されます。
わかりやすくするために、$filter$に対してInputで値を与えるようにしてみます。

<form>
  <label>lookup_reset</label>
  <fieldset submitButton="false">
    <input type="text" token="filter">
      <label>filter</label>
      <initialValue>| where action="search"</initialValue>
    </input>
  </fieldset>
  <row>
    <panel>
      <table>
        <search>
          <query>
| from datamodel:"internal_audit_logs.Audit" 
$filter$
| table _time, action, info, sorce, user
        </query>
        </search>
      </table>
    </panel>
  </row>
</form>

filterの値を変えてみると、

検索が再度走って、結果も変わります。
ちなみにブランクにすると、

以下として扱われるわけですね。

| from datamodel:"internal_audit_logs.Audit" 

| table _time host, action, info, sorce, user

Tips トークン定義を使ったサーチの実行タイミング制御

ダッシュボードでやることか、、、?という気はしつつですが。
サーチについて、例えばoutputlookupを使うときなど、splを実行するタイミングを明確に決めたい場合があります。例えばボタンを押したときに1回だけ実行する、とか。

上記を、tokenの未定義->定義で制御する方法を考えてみました。
こんな。

<dashboard>
  <label>lookup_reset</label>
  <init>
    <set token="hide"></set>
  </init>
  <row>
    <panel rejects="$do_output$">
      <single>
        <search>
          <query>
| makeresults 1 | eval description="Backup"
| table description
        </query>
        </search>
        <drilldown>
          <set token="do_output"></set>
        </drilldown>
      </single>
    </panel>
  </row>
  <row>
    <panel depends="$do_output$">
      <table>
        <search>
          <query>| from datamodel:"internal_audit_logs.Audit" 
| outputlookup backup.csv
$do_output$</query>
          <earliest>$earliest$</earliest>
          <latest>$latest$</latest>
        </search>
        <option name="refresh.display">progressbar</option>
      </table>
    </panel>
  </row>
</dashboard>

Backupをクリックすると、outputlookup処理が走って、lookupにサーチ結果が保存されます。
で、結果が表示され、Backupの表示が隠れます。
力づくですが、これでボタンを押したら一回だけ実施、の処理が実装できました。

とりあえず

今回はここまで。

Discussion