splunkのカスタムサーチコマンドのエラー内容を表示する方法
- 2018.06.25
- IT・プログラミング
- python, 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に出力され、カスタムサーチコマンドの改善点が見つかりました。
-
前の記事
ライブドアブログを5年使い倒して感じたメリット・デメリット 2018.06.23
-
次の記事
【Python】DomainToolsのAPIの使い方 2018.07.07