API создания или обновления наблюдения
Регистрирует новое наблюдение в Watcher или обновляет существующее.
Запрос
PUT _watcher/watch/<watch_id>
Предварительные условия
- У вас должны быть
manage_watcherпривилегии кластера для использования этого API. Дополнительную информацию см. в Привилегии безопасности.
Описание
При регистрации наблюдения новый документ, представляющий наблюдение, добавляется в индекс .watches, а его триггер сразу же регистрируется в соответствующем движке триггеров. Обычно для триггера schedule движком триггеров является планировщик.
Для создания наблюдения необходимо использовать Kibana или этот API. Не добавляйте наблюдение напрямую в индекс .watches с помощью API индекса Elasticsearch. Если функции безопасности Elasticsearch включены, не предоставляйте пользователям write привилегии на индекс .watches.
При добавлении наблюдения вы также можете определить его начальное активное состояние. Для этого установите параметр active.
Интеграция с безопасностью
Если функции безопасности Elasticsearch включены, ваше наблюдение может индексировать или искать только в тех индексах, для которых у пользователя, который сохранил наблюдение, есть привилегии. Если пользователь может читать индекс a, но не индекс b, то это же правило будет применяться при выполнении наблюдения.
Параметры пути
-
<watch_id> - (Обязательный, строка) Идентификатор наблюдения.
Параметры запроса
-
active - (Необязательный, логический) Определяет, активное или неактивное наблюдение по умолчанию. Значение по умолчанию —
true, что означает активное состояние по умолчанию.
Тело запроса
Наблюдение имеет следующие поля:
| Имя | Описание |
|---|---|
| Триггер, определяющий, когда должно выполняться наблюдение. |
| Входные данные, определяющие источник данных для наблюдения. |
| Условие, определяющее, будут ли выполнены действия. |
| Список действий, которые будут выполнены, если условие совпадает. |
| Преобразование, обрабатывающее данные наблюдения перед выполнением действий. |
| Данные метаданных в формате JSON, которые будут скопированы в записи истории. |
| Минимальное время между запусками действий, значение по умолчанию 5 секунд. Это значение по умолчанию можно изменить в файле конфигурации с настройкой |
| Минимальное время в миллисекундах между запусками действий. По умолчанию |
Примеры
В следующем примере добавляется наблюдение с идентификатором my-watch с указанными характеристиками:
- Наблюдение запускается каждую минуту.
- Входные данные наблюдения ищут HTTP-ответы 404, произошедшие за последние пять минут.
- Условие наблюдения проверяет, были ли найдены совпадения.
- При совпадении наблюдение отправляет электронное письмо администратору.
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": "admin@domain.host.com",
"subject": "404 recently encountered"
}
}
},
)
print(resp) 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: "admin@domain.host.com",
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" : "admin@domain.host.com",
"subject" : "404 recently encountered"
}
}
}
} При добавлении наблюдения вы также можете определить его начальное активное состояние. Для этого установите параметр active. Следующая команда добавляет наблюдение и устанавливает его в неактивное состояние по умолчанию:
PUT _watcher/watch/my-watch?active=false
Если параметр active опущен, наблюдение по умолчанию будет активным.
© 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/8.17/watcher-api-put-watch.html