splunkのカスタムサーチコマンドのエラー内容を表示する方法

splunkのカスタムサーチコマンドのエラー内容を表示する方法

splunkのカスタムサーチコマンドのpythonスクリプトを製作し、いざサーチ文を実行すると、「External search command ‘サーチコマンド名’ returned error code 1.」と出て何がエラーの原因か分からない時があります。

pythonスクリプトが配置しているbinファイルで直接実行しても

>import splunk.Intersplunk
>ModuleNotFoundError: No module named ‘splunk’

と表示される時があると思います。

そんな時は、try except文でエラー内容をキャッチし、splunkにエラー文を表示するのが効果的です。

import splunk.Intersplunk
results, dummyresults, settings = splunk.Intersplunk.getOrganizedResults()

for result in results:
        result["test"] = test1

splunk.Intersplunk.outputResults(results)

ここでは、「test1」をダブルクォーテーションで囲ってないためエラーとなりますが、上記のようにスクリプトを書くとエラーの原因はsplunkに表示されません。

そこで以下のようにtracebackをimportで読み込んで、try、exceptでsplunk.Intersplunk.generateErrorResultsにエラー情報を読み込ませます。

import traceback
import splunk.Intersplunk
results, dummyresults, settings = splunk.Intersplunk.getOrganizedResults()

try:
    for result in results:
        result["test"] = test1

except:
    error =  traceback.format_exc()
    results = splunk.Intersplunk.generateErrorResults("Error : Traceback: " + str(error))

splunk.Intersplunk.outputResults(results)

〇上記ソースコードで実行した結果
カスタムサーチコマンドのエラー内容を表示

無事、エラー内容がsplunkに出力され、カスタムサーチコマンドの改善点が見つかりました。