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

API подтверждения (ack) наблюдения

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

Запрос

PUT _watcher/watch/<watch_id>/_ack

PUT _watcher/watch/<watch_id>/_ack/<action_id>

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

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

Описание

Состояние подтверждения действия хранится в структуре status.actions.<id>.ack.state.

Если указанное наблюдение выполняется в данный момент, этот API вернёт ошибку. Это делается для предотвращения перезаписи статуса наблюдения во время его выполнения.

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

<action_id>
(Необязательный, список) Список идентификаторов действий, которые нужно подтвердить, разделённые запятыми. Если этот параметр опущен, будут подтверждены все действия наблюдения.
<watch_id>
(Обязательный, строка) Идентификатор наблюдения.

Примеры

Для демонстрации создадим новое наблюдение:

PUT _watcher/watch/my_watch
{
  "trigger" : {
    "schedule" : {
      "yearly" : { "in" : "february", "on" : 29, "at" : "noon" }
    }
  },
  "input": {
    "simple": {
      "payload": {
        "send": "yes"
      }
    }
  },
  "condition": {
    "always": {}
  },
  "actions": {
    "test_index": {
      "throttle_period": "15m",
      "index": {
        "index": "test"
      }
    }
  }
}

Текущий статус наблюдения и состояние его действий возвращаются с определением наблюдения при вызове API получения наблюдения:

GET _watcher/watch/my_watch

Состояние действия вновь созданного наблюдения равно awaits_successful_execution:

{
  "found": true,
  "_seq_no": 0,
  "_primary_term": 1,
  "_version": 1,
  "_id": "my_watch",
  "status": {
    "version": 1,
    "actions": {
      "test_index": {
        "ack": {
          "timestamp": "2015-05-26T18:04:27.723Z",
          "state": "awaits_successful_execution"
        }
      }
    },
    "state": ...
  },
  "watch": ...
}

Когда наблюдение выполняется и условие соответствует, значение ack.state изменяется на ackable. Давайте заставим наблюдение выполнить и повторно запросим его, чтобы проверить статус:

POST _watcher/watch/my_watch/_execute
{
  "record_execution" : true
}

GET _watcher/watch/my_watch

и действие теперь находится в состоянии ackable:

{
  "found": true,
  "_id": "my_watch",
  "_seq_no": 1,
  "_primary_term": 1,
  "_version": 2,
  "status": {
    "version": 2,
    "actions": {
      "test_index": {
        "ack": {
          "timestamp": "2015-05-26T18:04:27.723Z",
          "state": "ackable"
        },
        "last_execution" : {
          "timestamp": "2015-05-25T18:04:27.723Z",
          "successful": true
        },
        "last_successful_execution" : {
          "timestamp": "2015-05-25T18:04:27.723Z",
          "successful": true
        }
      }
    },
    "state": ...,
    "execution_state": "executed",
    "last_checked": ...,
    "last_met_condition": ...
  },
  "watch": ...
}

Теперь мы можем подтвердить его:

PUT _watcher/watch/my_watch/_ack/test_index
GET _watcher/watch/my_watch
{
  "found": true,
  "_id": "my_watch",
  "_seq_no": 2,
  "_primary_term": 1,
  "_version": 3,
  "status": {
    "version": 3,
    "actions": {
      "test_index": {
        "ack": {
          "timestamp": "2015-05-26T18:04:27.723Z",
          "state": "acked"
        },
        "last_execution" : {
          "timestamp": "2015-05-25T18:04:27.723Z",
          "successful": true
        },
        "last_successful_execution" : {
          "timestamp": "2015-05-25T18:04:27.723Z",
          "successful": true
        }
      }
    },
    "state": ...,
    "execution_state": "executed",
    "last_checked": ...,
    "last_met_condition": ...
  },
  "watch": ...
}

Подтверждение действия ограничивает дальнейшее выполнение этого действия до тех пор, пока его состояние ack.state не будет сброшено до awaits_successful_execution. Это происходит, когда условие наблюдения не выполняется (условие оценивается как false).

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

POST _watcher/watch/my_watch/_ack/action1,action2

Чтобы подтвердить все действия наблюдения, просто опустите параметр actions:

POST _watcher/watch/my_watch/_ack

Ответ похож на ответ API получения наблюдения, но содержит только статус:

{
  "status": {
    "state": {
      "active": true,
      "timestamp": "2015-05-26T18:04:27.723Z"
    },
    "last_checked": "2015-05-26T18:04:27.753Z",
    "last_met_condition": "2015-05-26T18:04:27.763Z",
    "actions": {
      "test_index": {
        "ack" : {
          "timestamp": "2015-05-26T18:04:27.713Z",
          "state": "acked"
        },
        "last_execution" : {
          "timestamp": "2015-05-25T18:04:27.733Z",
          "successful": true
        },
        "last_successful_execution" : {
          "timestamp": "2015-05-25T18:04:27.773Z",
          "successful": true
        }
      }
    },
    "execution_state": "executed",
    "version": 2
  }
}

© 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-ack-watch.html

Spec-Zone.ru

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