Splunkでカスタムサーチコマンドを作成する(その2)


前回(その1)はカスタムサーチコマンドを作成するための基礎的な方法を記載しました。今回はもう少し機能を紹介していきたいと思います。この投稿は、前回の投稿を見ていることを前提としており、前回使用したプログラムtest.pyを書き換えて使用する内容になってますので、まだ見ていない方は下のリンク先の投稿を先に見ることをおすすめします。

Splunkでカスタムサーチコマンドを作成する(その1)

使用するデータ

前回と同じデータを使用します。

/dummy/sample.csv
"time","number","value"
"2020/01/01 12:00:00","1","a"
"2020/01/01 12:00:00","2","b"
"2020/01/01 12:00:00","3","c"

クエリに書かれているパラメータを読み込む

カスタムサーチコマンドでクエリのパラメータを読み込む機能を追加します。下のプログラムは、パラメータ1(下の例ではvalue)をフィールド名とするフィールドに、パラメータ2(下の例ではzzz)の文字を入れるものです。

/opt/splunk/etc/apps/search/bin/test.py
import splunk.Intersplunk
import sys

data,dummy1,dummy2 = splunk.Intersplunk.getOrganizedResults(input_str=None)
for tmp in data:
    tmp[sys.argv[1]] = sys.argv[2]
splunk.Intersplunk.outputResults(data)
SPL
host = sample.csv | hoge value zzz | table number value

valueの値が、a,b,cからzzzに変わりましたね。sys.argv[1]でパラメータ1をsys.argv[2]でパラメータ2を取り出すことができます。

エラー表示を自作する

プログラムでエラーが発生すると下のメッセージが出ます。このエラーメッセージは常に同じであまり使い勝手がよくありません。そこで、エラーメッセージを自由に書ける方法を記載します。

下のプログラムはパラメータが無い場合にエラーメッセージparameter errorを出力するものです。

/opt/splunk/etc/apps/search/bin/test.py
import splunk.Intersplunk
import sys

data,dummy1,dummy2 = splunk.Intersplunk.getOrganizedResults(input_str=None)
if len(sys.argv) < 2:
    splunk.Intersplunk.generateErrorResults('parameter error')
    sys.exit(0)
splunk.Intersplunk.outputResults(data)
SPL
host = sample.csv | hoge

splunk.Intersplunk.generateErrorResultsがエラー表示の部分です。エラーを出す時はsplunk.Intersplunk.outputResultsを実行させないように終了する必要があります。

サーチアシスタントを表示する

サーチアシスタントを使いカスタムサーチコマンドの使い方を表示する方法を記載します。設定すると下の図のように表示されます。

カスタムサーチコマンドのサーチアシスタントを設定するには、/opt/splunk/etc/system/local/searchbnf.confに以下の文を追加します。なお、Splunkのインストール直後の場合はsearchbnf.confがないので作成する必要があります。また、searchbnf.confを変更した後はSplunkの再起動が必要です。

/opt/splunk/etc/system/local/searchbnf.conf
[hoge-command]
shortdesc = 短い説明を書きます
description = 長い説明を書くことができます
syntax = hoge <field>
comment = exampleの説明を書きます
example = | hoge abc
usage = public

おわりに

これで様々なカスタムサーチコマンドを作ることができますね。


動作環境
Ubuntu 18.04.4 LTS
Splunk 8.0.2.1