ウォッチ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

  1. resp = client.watcher.put_watch(
  2. id="my-watch",
  3. trigger={
  4. "schedule": {
  5. "cron": "0 0/1 * * * ?"
  6. }
  7. },
  8. input={
  9. "search": {
  10. "request": {
  11. "indices": [
  12. "logstash*"
  13. ],
  14. "body": {
  15. "query": {
  16. "bool": {
  17. "must": {
  18. "match": {
  19. "response": 404
  20. }
  21. },
  22. "filter": {
  23. "range": {
  24. "@timestamp": {
  25. "from": "{{ctx.trigger.scheduled_time}}||-5m",
  26. "to": "{{ctx.trigger.triggered_time}}"
  27. }
  28. }
  29. }
  30. }
  31. }
  32. }
  33. }
  34. }
  35. },
  36. condition={
  37. "compare": {
  38. "ctx.payload.hits.total": {
  39. "gt": 0
  40. }
  41. }
  42. },
  43. actions={
  44. "email_admin": {
  45. "email": {
  46. "to": "[email protected]",
  47. "subject": "404 recently encountered"
  48. }
  49. }
  50. },
  51. )
  52. print(resp)

Js

  1. const response = await client.watcher.putWatch({
  2. id: "my-watch",
  3. trigger: {
  4. schedule: {
  5. cron: "0 0/1 * * * ?",
  6. },
  7. },
  8. input: {
  9. search: {
  10. request: {
  11. indices: ["logstash*"],
  12. body: {
  13. query: {
  14. bool: {
  15. must: {
  16. match: {
  17. response: 404,
  18. },
  19. },
  20. filter: {
  21. range: {
  22. "@timestamp": {
  23. from: "{{ctx.trigger.scheduled_time}}||-5m",
  24. to: "{{ctx.trigger.triggered_time}}",
  25. },
  26. },
  27. },
  28. },
  29. },
  30. },
  31. },
  32. },
  33. },
  34. condition: {
  35. compare: {
  36. "ctx.payload.hits.total": {
  37. gt: 0,
  38. },
  39. },
  40. },
  41. actions: {
  42. email_admin: {
  43. email: {
  44. to: "[email protected]",
  45. subject: "404 recently encountered",
  46. },
  47. },
  48. },
  49. });
  50. console.log(response);

コンソール

  1. PUT _watcher/watch/my-watch
  2. {
  3. "trigger" : {
  4. "schedule" : { "cron" : "0 0/1 * * * ?" }
  5. },
  6. "input" : {
  7. "search" : {
  8. "request" : {
  9. "indices" : [
  10. "logstash*"
  11. ],
  12. "body" : {
  13. "query" : {
  14. "bool" : {
  15. "must" : {
  16. "match": {
  17. "response": 404
  18. }
  19. },
  20. "filter" : {
  21. "range": {
  22. "@timestamp": {
  23. "from": "{{ctx.trigger.scheduled_time}}||-5m",
  24. "to": "{{ctx.trigger.triggered_time}}"
  25. }
  26. }
  27. }
  28. }
  29. }
  30. }
  31. }
  32. }
  33. },
  34. "condition" : {
  35. "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
  36. },
  37. "actions" : {
  38. "email_admin" : {
  39. "email" : {
  40. "to" : "[email protected]",
  41. "subject" : "404 recently encountered"
  42. }
  43. }
  44. }
  45. }

ウォッチを追加する際に、その初期のアクティブ状態を定義することもできます。activeパラメータを設定することでそれを行います。以下のコマンドはウォッチを追加し、デフォルトで非アクティブに設定します。

Js

  1. PUT _watcher/watch/my-watch?active=false

activeパラメータを省略すると、ウォッチはデフォルトでアクティブになります。