0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Splunkカスタムアラートアクションを利用してスクリプトを実行させる

Posted at

業務でSplunkのアラート時にスクリプトを実行したいという要件があり、その際にカスタムアラートアクションを利用したので、動作確認の内容を記載していきます。

カスタムアラートアクション用のApp構成

※動作確認のために必要なもので対応してます。

test_alert
 ┣bin
 ┃ ┗test.py
 ┣defaut
 ┃ ┣alert_actions.conf 
 ┃ ┗app.conf
 ┗metadata
   ┗default.meta

app.confの記載

アプリに関するパッケージとUIの情報を記載します。

[package]
check_for_updates = false   : Splunkbaseへのアップデートチェックの無効化

[ui]
is_visible = false          : SplunkWeb上のGUI表示の無効化

alert_actions.confの記載

このファイルでアラート時のアクション内容を設定します。
アラートアクションの名前であったり、アラート時にスクリプトを連携したい場合はここで定義したりしていきます。
以下のような設定をすることでスクリプトに渡すパラメータを設定することが可能です。

param.[パラメータ名] = [パラメータ値]

尚、パラメータ値に「SPLUNK_ARG environment variable」で準備されている環境変数をいれることで検索結果のイベント数等をパラメータ値として指定することが可能です。
デフォルトで準備されているパラメータもあります。

[test_alert]                
is_custom = 1                                   :カスタムアラートアクションを利用する場合は1にする
label = My Alert Action                         :SplunkWeb上でのカスタムアラートアクションの名前
payload_format = json                           :スクリプトへ渡される場合のペイロード形式
disabled = 0                                    :スタンザの有効化(有効にする場合は0にする)
alert.execute.cmd = test.py                     :アラート発生時に実行するスクリプト名
# Custom params
param.result_count = $job.resultCount$          :「result_count」パラメータ名で値に検索結果のイベント数を設定
param.search_query = $job.search$               :「search_query」パラメータ名で値に検索クエリを設定
param.test = abc                                :「test」パラメータ名で値に「abc」を設定

準備されている環境変数は下記を参照  
https://docs.splunk.com/Documentation/Splunk/latest/AdvancedDev/CustomAlertConvertScripted#Accessing_script_argument_values_in_a_custom_alert_action

default.metaの記載

Appの権限の定義を記載します。
下記は作成Appに対してすべてのユーザから読み込みを許可、書き込みはadminユーザのみに許可を設定しています。

[]
access = read : [ * ], write : [ admin ]
export = system

スクリプトの記載(test.py)

アラート時に実行するスクリプトを作成していきます。
今回は、Splunkからの渡されたパラメータの値を確認しやすくするためだけに
「/tmp/test.txt」のテキストにパラメータ値を記載するだけのスクリプトになっています。

import sys
import os
import json

path = "/tmp/test.txt"
d = json.loads(sys.stdin.read())

file = open(path, 'w', encoding='utf-8')
file.write(str(d['configuration']['result_count'])+'\n')
file.write(str(d['configuration']['search_query'])+'\n')
file.write(str(d['configuration']['test'])+'\n')
file.close()

Appを適用してアラートを設定する

カスタムアラートアクションのAppが作成されたら、AppをSplunkに適用してアラート作成時にアクションでに作成したカスタムアクションが表示されているので適用するだけとなります。
GUI上での表示名は「alert_actions.conf」の「label」で設定した名前が表示されます。

アラート設定.PNG

さいごに

実際にカスタムアラートアクションで利用するスクリプトでは、Splunkで用意されているライブラリではがなかったので、App内にライブラリを準備して読み込ませてからスクリプトを実行させるみたいないことも実施してました。
今後、機会があればその辺も記載したいなと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?