Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›REST API ›APIs наблюдателя

API выполнения наблюдения

Вызывает выполнение сохранённого наблюдения.

Запрос

POST _watcher/watch/<watch_id>/_execute

POST _watcher/watch/_execute

Предварительные условия

  • У вас должны быть manage_watcher привилегии кластера для использования этого API. Дополнительную информацию можно найти в разделе "Безопасность, привилегии".

Описание

Этот API можно использовать для принудительного выполнения наблюдения вне его логики запуска или для моделирования выполнения наблюдения в отладочных целях.

Для тестирования и отладки у вас также есть точный контроль над тем, как работает наблюдение. Вы можете выполнить наблюдение без выполнения всех его действий или, альтернативно, смоделировав их. Вы также можете принудительно выполнить наблюдение, проигнорировав условие наблюдения, и контролировать, будет ли запись наблюдения записываться в историю наблюдения после выполнения.

Выполнение наблюдения встраиваемым способом

Вы можете использовать API Execute для выполнения наблюдений, которые ещё не зарегистрированы, указав определение наблюдения непосредственно в запросе. Это отличный инструмент для тестирования и отладки наблюдений до добавления их в Watcher.

Параметры пути

<watch_id>
(Необязательно, строка) Идентификатор наблюдения.

Параметры запроса

debug
(Необязательно, логическое значение) Определяет, работает ли наблюдение в отладочном режиме. Значение по умолчанию - false.

Тело запроса

Этот API поддерживает следующие поля:

Имя Требуется По умолчанию Описание

trigger_data

нет

Эта структура анализируется как данные события триггера, которые будут использоваться во время выполнения наблюдения

ignore_condition

нет

false

При установке в значение true выполнение наблюдения использует условие всегда. Это также можно указать в качестве параметра HTTP.

alternative_input

нет

null

При наличии этого объекта используется в качестве полезной нагрузки вместо выполнения своего входного значения.

action_modes

нет

null

Определяет, как обработать действия наблюдения в рамках его выполнения. Дополнительную информацию см. в разделе Режимы выполнения действий.

record_execution

нет

false

При установке в значение true запись наблюдения, представляющая результат выполнения наблюдения, сохраняется в индексе .watcher-history для текущего времени. Кроме того, обновляется состояние наблюдения, что может ограничить последующие исполнения. Это также можно указать в качестве параметра HTTP.

watch

нет

null

При наличии этого наблюдения используется вместо указанного в запросе. Это наблюдение не сохраняется в индексе, и record_execution не может быть установлен.

Режимы выполнения действий

Режимы действий определяют, как обрабатываются действия во время выполнения наблюдения. Существует пять возможных режимов, которые могут быть ассоциированы с действием:

Имя Описание

simulate

Выполнение действия моделируется. Каждый тип действия определяет свой собственный режим моделирования. Например, действие email создаёт электронное письмо, которое должно было быть отправлено, но фактически не отправляет его. В этом режиме действие может быть ограничено, если текущее состояние наблюдения указывает на это.

force_simulate

Аналогично режиму simulate, за исключением того, что действие не ограничено, даже если текущее состояние наблюдения указывает на это.

execute

Выполняет действие так, как оно должно было быть выполнено, если наблюдение было активировано своим собственным триггером. Выполнение может быть ограничено, если текущее состояние наблюдения указывает на это.

force_execute

Аналогично режиму execute, за исключением того, что действие не ограничено, даже если текущее состояние наблюдения указывает на это.

skip

Действие пропускается и не выполняется или моделируется. Эффективно принуждает действие к ограничению.

Интеграция безопасности

При включенных функциях безопасности Elasticsearch в вашем кластере наблюдения выполняются с привилегиями пользователя, который сохранил наблюдения. Если вашему пользователю разрешено читать индекс a, но не индекс b, то точно такие же правила будут применяться при выполнении наблюдения.

При использовании API выполнения наблюдения данные авторизации пользователя, вызвавшего API, будут использоваться в качестве основы, а не информация о том, кто сохранил наблюдение.

Примеры

В следующем примере выполняется наблюдение my_watch:

POST _watcher/watch/my_watch/_execute

В следующем примере показан комплексный пример выполнения наблюдения my-watch:

POST _watcher/watch/my_watch/_execute
{
  "trigger_data" : { 
     "triggered_time" : "now",
     "scheduled_time" : "now"
  },
  "alternative_input" : { 
    "foo" : "bar"
  },
  "ignore_condition" : true, 
  "action_modes" : {
    "my-action" : "force_simulate" 
  },
  "record_execution" : true 
}

Указаны запущенное и запланированное время.

Входные данные, определённые в наблюдении, игнорируются, и вместо этого используется предоставленный входной данные как полезная нагрузка выполнения.

Условие, определённое в наблюдении, игнорируется и предполагается, что оно вычисляется как true.

Принуждает к моделированию my-action. Принудительное моделирование означает, что ограничение игнорируется, и наблюдение моделируется Watcher вместо его обычного выполнения.

Выполнение наблюдения создаёт запись наблюдения в истории наблюдения, и состояние ограничения наблюдения потенциально обновляется соответствующим образом.

Это пример вывода:

{
  "_id": "my_watch_0-2015-06-02T23:17:55.124Z", 
  "watch_record": { 
    "watch_id": "my_watch",
    "node": "my_node",
    "messages": [],
    "trigger_event": {
      "type": "manual",
      "triggered_time": "2015-06-02T23:17:55.124Z",
      "manual": {
        "schedule": {
          "scheduled_time": "2015-06-02T23:17:55.124Z"
        }
      }
    },
    "state": "executed",
    "status": {
      "version": 1,
      "execution_state": "executed",
      "state": {
        "active": true,
        "timestamp": "2015-06-02T23:17:55.111Z"
      },
      "last_checked": "2015-06-02T23:17:55.124Z",
      "last_met_condition": "2015-06-02T23:17:55.124Z",
      "actions": {
        "test_index": {
          "ack": {
            "timestamp": "2015-06-02T23:17:55.124Z",
            "state": "ackable"
          },
          "last_execution": {
            "timestamp": "2015-06-02T23:17:55.124Z",
            "successful": true
          },
          "last_successful_execution": {
            "timestamp": "2015-06-02T23:17:55.124Z",
            "successful": true
          }
        }
      }
    },
    "input": {
      "simple": {
        "payload": {
          "send": "yes"
        }
      }
    },
    "condition": {
      "always": {}
    },
    "result": { 
      "execution_time": "2015-06-02T23:17:55.124Z",
      "execution_duration": 12608,
      "input": {
        "type": "simple",
        "payload": {
          "foo": "bar"
        },
        "status": "success"
      },
      "condition": {
        "type": "always",
        "met": true,
        "status": "success"
      },
      "actions": [
        {
          "id": "test_index",
          "index": {
            "response": {
              "index": "test",
              "type": "_doc",
              "version": 1,
              "created": true,
              "result": "created",
              "id": "AVSHKzPa9zx62AzUzFXY"
            }
          },
          "status": "success",
          "type": "index"
        }
      ]
    },
    "user": "test_admin" 
  }
}

Идентификатор записи наблюдения, как он будет сохранён в индексе .watcher-history.

Документ записи наблюдения, как он будет сохранён в индексе .watcher-history.

Результаты выполнения наблюдения.

Пользователь, использовавшийся для выполнения наблюдения.

Вы можете установить другой режим выполнения для каждого действия, связав имя режима с идентификатором действия:

POST _watcher/watch/my_watch/_execute
{
  "action_modes" : {
    "action1" : "force_simulate",
    "action2" : "skip"
  }
}

Вы также можете связать один режим выполнения со всеми действиями в наблюдении, используя _all как идентификатор действия:

POST _watcher/watch/my_watch/_execute
{
  "action_modes" : {
    "_all" : "force_execute"
  }
}

В следующем примере показано, как выполнить наблюдение встраиваемым способом:

POST _watcher/watch/_execute
{
  "watch" : {
    "trigger" : { "schedule" : { "interval" : "10s" } },
    "input" : {
      "search" : {
        "request" : {
          "indices" : [ "logs" ],
          "body" : {
            "query" : {
              "match" : { "message": "error" }
            }
          }
        }
      }
    },
    "condition" : {
      "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
    },
    "actions" : {
      "log_error" : {
        "logging" : {
          "text" : "Found {{ctx.payload.hits.total}} errors in the logs"
        }
      }
    }
  }
}

Все остальные настройки для этого API по-прежнему применяются при встраивании наблюдения. В следующем фрагменте, в то время как встраиваемое наблюдение определяет условие compare, при выполнении это условие будет проигнорировано:

POST _watcher/watch/_execute
{
  "ignore_condition" : true,
  "watch" : {
    "trigger" : { "schedule" : { "interval" : "10s" } },
    "input" : {
      "search" : {
        "request" : {
          "indices" : [ "logs" ],
          "body" : {
            "query" : {
              "match" : { "message": "error" }
            }
          }
        }
      }
    },
    "condition" : {
      "compare" : { "ctx.payload.hits.total" : { "gt" : 0 }}
    },
    "actions" : {
      "log_error" : {
        "logging" : {
          "text" : "Found {{ctx.payload.hits.total}} errors in the logs"
        }
      }
    }
  }
}

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/watcher-api-execute-watch.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API