Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›REST API ›Watcher API

API создания или обновления наблюдения

Справочник по новым API

Для получения самых последних данных об API обратитесь к API Watcher.

Регистрирует новое наблюдение в 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, что означает активное состояние по умолчанию.

Тело запроса

Наблюдение имеет следующие поля:

Имя Описание

trigger

Триггер, определяющий, когда должно выполняться наблюдение.

input

Входные данные, определяющие источник данных для наблюдения.

condition

Условие, определяющее, будут ли выполнены действия.

actions

Список действий, которые будут выполнены, если условие совпадает.

transform

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

metadata

Данные метаданных в формате JSON, которые будут скопированы в записи истории.

throttle_period

Минимальное время между запусками действий, значение по умолчанию 5 секунд. Это значение по умолчанию можно изменить в файле конфигурации с настройкой xpack.watcher.throttle.period.default_period. Если указаны оба значения, Watcher использует последнее значение в запросе.

throttle_period_in_millis

Минимальное время в миллисекундах между запусками действий. По умолчанию 5000. Если указаны оба значения, Watcher использует последнее значение в запросе.

Примеры

В следующем примере добавляется наблюдение с идентификатором 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

Spec-Zone.ru

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