ウォッチAPIの作成または更新
新しいウォッチをWatcherに登録するか、既存のウォッチを更新します。
リクエスト
PUT _watcher/watch/<watch_id>
前提条件
- このAPIを使用するには、
manage_watcher
クラスター権限が必要です。詳細については、セキュリティ権限を参照してください。
説明
ウォッチが登録されると、ウォッチを表す新しいドキュメントが.watches
インデックスに追加され、そのトリガーは関連するトリガーエンジンに即座に登録されます。通常、schedule
トリガーの場合、スケジューラーがトリガーエンジンです。
KibanaまたはこのAPIを使用してウォッチを作成する必要があります。ElasticsearchインデックスAPIを使用して.watches
インデックスに直接ウォッチを追加しないでください。Elasticsearchのセキュリティ機能が有効になっている場合、.watches
インデックスに対してwrite
権限をユーザーに与えないでください。
ウォッチを追加する際に、その初期のアクティブ状態を定義することもできます。active
パラメータを設定することでそれを行います。
セキュリティ統合
Elasticsearchのセキュリティ機能が有効になっている場合、ウォッチは、ウォッチを保存したユーザーが権限を持つインデックスでのみインデックスまたは検索できます。ユーザーがa
インデックスを読み取ることができるが、b
インデックスを読み取ることができない場合、ウォッチが実行されるときも同様のことが適用されます。
パスパラメータ
<watch_id>
- (必須、文字列)ウォッチの識別子。
クエリパラメータ
active
- (オプション、Boolean)ウォッチがデフォルトでアクティブか非アクティブかを定義します。デフォルト値は
true
で、これはウォッチがデフォルトでアクティブであることを意味します。
リクエストボディ
ウォッチには以下のフィールドがあります:
名前 | 説明 |
---|---|
trigger |
ウォッチが実行されるべき時を定義するトリガー。 |
input |
ウォッチのデータをロードするための入力。 |
condition |
アクションを実行すべきかどうかを定義する条件。 |
actions |
条件が一致した場合に実行されるアクションのリスト。 |
transform |
ウォッチアクションの準備のためにウォッチペイロードを処理する変換。 |
metadata |
履歴エントリにコピーされるメタデータJSON。 |
throttle_period |
アクションが実行される間の最小時間、デフォルトは5秒です。このデフォルトは、設定ファイルの設定xpack.watcher.throttle.period.default_period で変更できます。この値とthrottle_period_in_millis パラメータの両方が指定されている場合、Watcherはリクエストに含まれる最後のパラメータを使用します。 |
throttle_period_in_millis |
アクションが実行される間の最小時間(ミリ秒)。デフォルトは5000 です。この値とthrottle_period パラメータの両方が指定されている場合、Watcherはリクエストに含まれる最後のパラメータを使用します。 |
例
以下の例は、my-watch
IDを持つウォッチを追加し、次の特性を持ちます:
- ウォッチスケジュールは毎分トリガーされます。
- ウォッチ検索入力は、過去5分間に発生した404 HTTPレスポンスを探します。
- ウォッチ条件は、検索ヒットが見つかったかどうかを確認します。
- 見つかった場合、ウォッチアクションは管理者にメールを送信します。
Python
resp = client.watcher.put_watch(
id="my-watch",
trigger={
"schedule": {
"cron": "0 0/1 * * * ?"
}
},
input={
"search": {
"request": {
"indices": [
"logstash*"
],
"body": {
"query": {
"bool": {
"must": {
"match": {
"response": 404
}
},
"filter": {
"range": {
"@timestamp": {
"from": "{{ctx.trigger.scheduled_time}}||-5m",
"to": "{{ctx.trigger.triggered_time}}"
}
}
}
}
}
}
}
}
},
condition={
"compare": {
"ctx.payload.hits.total": {
"gt": 0
}
}
},
actions={
"email_admin": {
"email": {
"to": "[email protected]",
"subject": "404 recently encountered"
}
}
},
)
print(resp)
Js
const response = await client.watcher.putWatch({
id: "my-watch",
trigger: {
schedule: {
cron: "0 0/1 * * * ?",
},
},
input: {
search: {
request: {
indices: ["logstash*"],
body: {
query: {
bool: {
must: {
match: {
response: 404,
},
},
filter: {
range: {
"@timestamp": {
from: "{{ctx.trigger.scheduled_time}}||-5m",
to: "{{ctx.trigger.triggered_time}}",
},
},
},
},
},
},
},
},
},
condition: {
compare: {
"ctx.payload.hits.total": {
gt: 0,
},
},
},
actions: {
email_admin: {
email: {
to: "[email protected]",
subject: "404 recently encountered",
},
},
},
});
console.log(response);
コンソール
PUT _watcher/watch/my-watch
{
"trigger" : {
"schedule" : { "cron" : "0 0/1 * * * ?" }
},
"input" : {
"search" : {
"request" : {
"indices" : [
"logstash*"
],
"body" : {
"query" : {
"bool" : {
"must" : {
"match": {
"response": 404
}
},
"filter" : {
"range": {
"@timestamp": {
"from": "{{ctx.trigger.scheduled_time}}||-5m",
"to": "{{ctx.trigger.triggered_time}}"
}
}
}
}
}
}
}
}
},
"condition" : {
"compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
},
"actions" : {
"email_admin" : {
"email" : {
"to" : "[email protected]",
"subject" : "404 recently encountered"
}
}
}
}
ウォッチを追加する際に、その初期のアクティブ状態を定義することもできます。active
パラメータを設定することでそれを行います。以下のコマンドはウォッチを追加し、デフォルトで非アクティブに設定します。
Js
PUT _watcher/watch/my-watch?active=false
active
パラメータを省略すると、ウォッチはデフォルトでアクティブになります。