API выполнения наблюдения
Вызывает выполнение сохранённого наблюдения.
Запрос
POST _watcher/watch/<watch_id>/_execute
POST _watcher/watch/_execute
Предварительные условия
- У вас должны быть
manage_watcherпривилегии кластера для использования этого API. Дополнительную информацию можно найти в разделе "Безопасность, привилегии".
Описание
Этот API можно использовать для принудительного выполнения наблюдения вне его логики запуска или для моделирования выполнения наблюдения в отладочных целях.
Для тестирования и отладки у вас также есть точный контроль над тем, как работает наблюдение. Вы можете выполнить наблюдение без выполнения всех его действий или, альтернативно, смоделировав их. Вы также можете принудительно выполнить наблюдение, проигнорировав условие наблюдения, и контролировать, будет ли запись наблюдения записываться в историю наблюдения после выполнения.
Выполнение наблюдения встраиваемым способом
Вы можете использовать API Execute для выполнения наблюдений, которые ещё не зарегистрированы, указав определение наблюдения непосредственно в запросе. Это отличный инструмент для тестирования и отладки наблюдений до добавления их в Watcher.
Параметры пути
-
<watch_id> - (Необязательно, строка) Идентификатор наблюдения.
Параметры запроса
-
debug - (Необязательно, логическое значение) Определяет, работает ли наблюдение в отладочном режиме. Значение по умолчанию -
false.
Тело запроса
Этот API поддерживает следующие поля:
| Имя | Требуется | По умолчанию | Описание |
|---|---|---|---|
| нет | Эта структура анализируется как данные события триггера, которые будут использоваться во время выполнения наблюдения | |
| нет | false | При установке в значение |
| нет | null | При наличии этого объекта используется в качестве полезной нагрузки вместо выполнения своего входного значения. |
| нет | null | Определяет, как обработать действия наблюдения в рамках его выполнения. Дополнительную информацию см. в разделе Режимы выполнения действий. |
| нет | false | При установке в значение |
| нет | null | При наличии этого наблюдения используется вместо указанного в запросе. Это наблюдение не сохраняется в индексе, и record_execution не может быть установлен. |
Режимы выполнения действий
Режимы действий определяют, как обрабатываются действия во время выполнения наблюдения. Существует пять возможных режимов, которые могут быть ассоциированы с действием:
| Имя | Описание |
|---|---|
| Выполнение действия моделируется. Каждый тип действия определяет свой собственный режим моделирования. Например, действие |
| Аналогично режиму |
| Выполняет действие так, как оно должно было быть выполнено, если наблюдение было активировано своим собственным триггером. Выполнение может быть ограничено, если текущее состояние наблюдения указывает на это. |
| Аналогично режиму |
| Действие пропускается и не выполняется или моделируется. Эффективно принуждает действие к ограничению. |
Интеграция безопасности
При включенных функциях безопасности 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
} | Указаны запущенное и запланированное время. | |
| Входные данные, определённые в наблюдении, игнорируются, и вместо этого используется предоставленный входной данные как полезная нагрузка выполнения. | |
| Условие, определённое в наблюдении, игнорируется и предполагается, что оно вычисляется как | |
| Принуждает к моделированию | |
| Выполнение наблюдения создаёт запись наблюдения в истории наблюдения, и состояние ограничения наблюдения потенциально обновляется соответствующим образом. |
Это пример вывода:
{
"_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"
}
} | Идентификатор записи наблюдения, как он будет сохранён в индексе | |
| Документ записи наблюдения, как он будет сохранён в индексе | |
| Результаты выполнения наблюдения. | |
| Пользователь, использовавшийся для выполнения наблюдения. |
Вы можете установить другой режим выполнения для каждого действия, связав имя режима с идентификатором действия:
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