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

Действие Watcher webhook

Используйте действие 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}}" 
    }
  }
}

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

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

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

HTTP-метод, используемый при подключении к хосту

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

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

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

Тело, которое нужно отправить с запросом

При отправке запроса на защищённый веб-сервис можно использовать базовые аутентификационные данные. Например, следующее действие 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 может зашифровать пароль перед его сохранением.

При отправке запросов в кластер с включёнными функциями безопасности Elasticsearch также можно использовать аутентификацию на основе PKI. При использовании аутентификации на основе PKI вместо базовой аутентификации HTTP не нужно хранить никакую информацию об аутентификации в самом watch. Чтобы использовать аутентификацию на основе 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, связанные с аутентификацией. В настоящее время поддерживается только базовая аутентификация.

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

Spec-Zone.ru

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