はじめに
Splunk Observability Cloud の設定作業を API で行う方法をまとめておきたいと思います。この記事では、API でディテクターを設定していきます。
記事の内容
下記の操作を行う curl コマンドのサンプルです。
- シンプルなディテクターを作成
- 作成したディテクター設定の確認
- ディテクターを削除
参考にしたドキュメント
- API リファレンス > Detectors
準備
コマンドだけで作業を完結したいので、下記の記事を参考に APIアクセストークン(session token)を取得しておきます。
シンプルなディテクター作成
利用開始時に用意されているサンプルのメトリック demo.trans.latency を使って
シンプルなディテクターを作成してみます。
まずは上記の記事を参考に取得したAPIアクセストークンを環境変数にセットします。
export SPLUNK_O11Y_API_TOKEN=(取得したAPIアクセストークン)
そして Splunk Observability Cloud の Realm も環境変数にセットしておきます。
export SPLUNK_O11Y_REALM=(jp0 や us1 など)
作成するディテクターの設定を JSON ファイルとして準備します。
cat > request.json <<_EOF
{
"name": "test detector 4",
"description": "example",
"maxDelay": 0,
"programText" : "A = data('demo.trans.latency').percentile(pct=90).publish(label='A');detect(when(A > threshold(200)), auto_resolve_after='1h').publish('Latency is High')",
"rules": [
{
"detectLabel": "Latency is High",
"severity": "Major"
}
],
"tags": ["late_response"]
}
_EOF
最後にcurlコマンドでディテクターを作成します。
curl -X POST "https://app.${SPLUNK_O11Y_REALM}.signalfx.com/v2/detector" \
-H "Content-Type: application/json" \
-H "X-SF-Token: ${SPLUNK_O11Y_API_TOKEN}" \
-d @request.json
コマンドを実行すると次のような出力が表示されます。"id" 部分の「GNGUGeVA0AA」が今回作成したディテクターのIDです。
{
"authorizedWriters" : {
"teams" : [ ],
"users" : [ ]
},
"created" : 1715217755370,
"creator" : "(作成者のユーザーID)",
"customProperties" : null,
"description" : "example",
"detectorOrigin" : "Standard",
"id" : "GNGUGeVA0AA",
"labelResolutions" : null,
"lastUpdated" : 0,
"lastUpdatedBy" : null,
"maxDelay" : 0,
"minDelay" : null,
"name" : "test detector 1",
(以下省略)
作成したディテクター設定の確認
curlコマンド先ほど作成したディテクターID(GNGUGeVA0AA)をGETします。
curl -X GET "https://app.${SPLUNK_O11Y_REALM}.signalfx.com/v2/detector/GNGUGeVA0AA" \
-H "Content-Type: application/json" \
-H "X-SF-Token: ${SPLUNK_O11Y_API_TOKEN}"
出力結果は次のようになります。
{
"authorizedWriters" : {
"teams" : [ ],
"users" : [ ]
},
"created" : 1715217755370,
"creator" : "(作成者のユーザーID)",
"customProperties" : null,
"description" : "example",
"detectorOrigin" : "Standard",
"id" : "GNGUGeVA0AA",
"labelResolutions" : {
"Latency is High" : 1000
},
"lastUpdated" : 1715217756154,
(以下省略)
ディテクターを削除
先ほど作成したディテクターのIDを環境変数にセットしておきます。
export SPLUNK_O11Y_DETECTOR_ID=(削除したいディテクターのID)
curlコマンド(DELETE)で削除します。
curl -X DELETE "https://app.${SPLUNK_O11Y_REALM}.signalfx.com/v2/detector/${SPLUNK_O11Y_DETECTOR_ID}" \
-H "Content-Type: application/json" \
-H "X-SF-Token: ${SPLUNK_O11Y_API_TOKEN}"
おわりに
今回はdemoメトリクスを使ったシンプルなディテクターを作成する方法を紹介しましたが、APIリファレンスを参考にしたり、管理画面で作成したものを参考にすることで、実用的な設定のJSONファイルを用意することができると思います。
本記事が、ディテクター管理をコマンドで行う際の参考になればと思います。