Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Watcher ›Действия Watcher

Действие webhook Watcher

Используйте действие webhook для отправки запроса любому веб-сервису. Действие webhook поддерживает подключения HTTP и HTTPS. См. Атрибуты действия webhook для поддерживаемых атрибутов.

Настройка действий webhook

Вы настраиваете действия webhook в массиве actions. Действие-специфические атрибуты указываются с использованием ключевого слова webhook.

Следующий фрагмент показывает простое определение действия webhook:

"actions" : {
  "my_webhook" : { 
    "transform" : { ... }, 
    "throttle_period" : "5m", 
    "webhook" : {
      "method" : "POST", 
      "host" : "mylisteningserver", 
      "port" : 9200, 
      "path": ":/{{ctx.watch_id}}", 
      "body" : "{{ctx.watch_id}}:{{ctx.payload.hits.total}}" 
    }
  }
}

Идентификатор действия

Необязательное преобразование transform для преобразования полезной нагрузки перед выполнением действия webhook

Необязательный период ожидания для действия (5 минут в этом примере)

HTTP-метод для подключения к хосту

Хост для подключения

Порт для подключения

Путь (URI) для использования в HTTP-запросе

Тело для отправки с запросом

При отправке запроса на защищённый веб-сервис можно использовать аутентификацию по протоколу Basic. Например, следующее действие webhook создаёт новую задачу в GitHub:

"actions" : {
  "create_github_issue" : {
    "transform": {
      "script": "return ['title':'Found errors in \\'contact.html\\'', 'body' : 'Found ' + ctx.payload.hits.total + ' errors in the last 5 minutes', 'assignee' : 'web-admin', 'labels' : ['bug','sev2']]"
    },
    "webhook" : {
      "method" : "POST",
      "url" : "https://api.github.com/repos/<owner>/<repo>/issues",
      "body": "{{#toJson}}ctx.payload{{/toJson}}",
      "auth" : {
        "basic" : {
          "username" : "<username>", 
          "password" : "<password>"
        }
      }
    }
  }
}

Имя пользователя и пароль пользователя, создающего задачу

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

Также можно использовать аутентификацию на основе PKI при отправке запросов в кластер, в котором включены функции безопасности Elasticsearch. При использовании аутентификации на основе PKI вместо аутентификации по протоколу Basic вам не нужно хранить какую-либо информацию об аутентификации в самом наблюдении. Для использования аутентификации на основе PKI нужно настроить параметры SSL для Watcher в elasticsearch.yml.

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

Для отправки параметров запроса с запросом можно использовать поле params. Это поле просто содержит объект, где ключи служат именами параметров, а значения — значениями параметров:

"actions" : {
  "my_webhook" : {
    "webhook" : {
      "method" : "POST",
      "host" : "mylisteningserver",
      "port" : 9200,
      "path": ":/alert",
      "params" : {
        "watch_id" : "{{ctx.watch_id}}" 
      }
    }
  }
}

Значения параметров могут содержать шаблонные строки.

Настраиваемые заголовки запроса

Для отправки заголовков запроса с запросом можно использовать поле headers. Это поле просто содержит объект, где ключи служат именами заголовков, а значения — значениями заголовков:

"actions" : {
  "my_webhook" : {
    "webhook" : {
      "method" : "POST",
      "host" : "mylisteningserver",
      "port" : 9200,
      "path": ":/alert/{{ctx.watch_id}}",
      "headers" : {
        "Content-Type" : "application/yaml" 
      },
      "body" : "count: {{ctx.payload.hits.total}}"
    }
  }
}

Значения заголовков могут содержать шаблонные строки.

Атрибуты действия webhook

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

scheme

нет

http

Схема подключения. Допустимые значения: http или https.

host

да

-

Хост для подключения.

port

да

-

Порт, на котором работает HTTP-сервис.

path

нет

-

Путь к URL. Путь может быть статическим текстом или содержать шаблонные строки Mustache шаблоны. Параметры строки запроса URL необходимо указывать через атрибут request.params.

method

нет

get

HTTP-метод. Допустимые значения: head, get, post, put и delete.

headers

нет

-

Заголовки HTTP-запроса. Значения заголовков могут быть статическим текстом или содержать шаблонные строки Mustache шаблоны.

params

нет

-

Параметры строки запроса URL. Значения параметров могут быть статическим текстом или содержать шаблонные строки Mustache шаблоны.

auth

нет

-

Заголовки HTTP, связанные с аутентификацией. В настоящее время поддерживается только аутентификация по протоколу Basic.

body

нет

-

Тело HTTP-запроса. Тело может быть статическим текстом или содержать шаблонные строки Mustache шаблоны. Если не указано, отправляется пустое тело.

proxy.host

нет

-

Прокси-хост для подключения к хосту.

proxy.port

нет

-

Прокси-порт для подключения к хосту.

connection_timeout

нет

10с

Таймаут для установки HTTP-соединения. Если соединение не может быть установлено в течение этого времени, действие завершится с таймаутом и ошибкой.

read_timeout

нет

10с

Таймаут для чтения данных из HTTP-соединения. Если ответ не получен в течение этого времени, действие завершится с таймаутом и ошибкой.

url

нет

-

Сокращённая запись для указания схемы запроса, хоста, порта и пути как одной строки. Например, http://example.org/foo/my-service.

© 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/actions-webhook.html

Spec-Zone.ru

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