Вход Watcher HTTP
Используйте вход http, чтобы отправить запрос к HTTP-точке входа и загрузить ответ в контекст выполнения наблюдения при срабатывании наблюдения. См. атрибуты ввода HTTP для всех поддерживаемых атрибутов.
С помощью входа http вы можете:
- Запрашивать данные из внешних кластеров Elasticsearch. Вход
httpпредоставляет способ отправки запросов поиска в кластеры, отличные от того, на котором выполняется Watcher. Это полезно, когда вы используете отдельный кластер Watcher или вам нужно искать в кластерах, работающих на разных версиях Elasticsearch. - Запрашивать API Elasticsearch, помимо API поиска. Например, вы можете загрузить данные из API статистики узлов, состояния кластера или состояния кластера.
- Запрашивать внешние веб-службы. Вход
httpпозволяет загружать данные с любой службы, которая предоставляет HTTP-точку входа. Это обеспечивает мост между кластерами Elasticsearch и другими системами.
Запрос к внешним кластерам Elasticsearch
Чтобы запросить внешний кластер Elasticsearch, укажите атрибуты host и port кластера и точку входа поиска для индекса как path. Если вы опустите тело запроса, запрос вернёт все документы в указанном индексе:
"input" : {
"http" : {
"request" : {
"host" : "example.com",
"port" : 9200,
"path" : "/idx/_search"
}
}
} Вы можете использовать полный Elasticsearch Query DSL для выполнения более сложных поисков. Например, следующий вход http извлекает все документы, содержащие event в поле category:
"input" : {
"http" : {
"request" : {
"host" : "host.domain",
"port" : 9200,
"path" : "/idx/_search",
"body" : "{\"query\" : { \"match\" : { \"category\" : \"event\"}}}"
}
}
} Вызов API Elasticsearch
Чтобы загрузить данные из других API Elasticsearch, укажите конечную точку API как атрибут path. Используйте атрибут params для указания параметров запроса. Например, следующий вход http вызывает API статистики кластера и включает атрибут human:
"input" : {
"http" : {
"request" : {
"host" : "host.domain",
"port" : 9200,
"path" : "/_cluster/stats",
"params" : {
"human" : "true"
}
}
}
} | Включение этого атрибута возвращает значения |
Вызов внешних веб-служб
Вы можете использовать вход http для получения данных с любой внешней веб-службы. Вход http поддерживает базовые аутентификации. Например, следующий вход предоставляет имя пользователя и пароль для доступа к myservice:
"input" : {
"http" : {
"request" : {
"host" : "host.domain",
"port" : 9200,
"path" : "/myservice",
"auth" : {
"basic" : {
"username" : "user",
"password" : "pass"
}
}
}
}
} Вы также можете передавать API-ключи и другую информацию, специфичную для службы, через атрибут params. Например, следующий вход http загружает текущий прогноз погоды для Амстердама со службы OpenWeatherMap:
"input" : {
"http" : {
"request" : {
"url" : "http://api.openweathermap.org/data/2.5/weather",
"params" : {
"lat" : "52.374031",
"lon" : "4.88969",
"appid" : "<your openweathermap appid>"
}
}
}
} Использование шаблонов
Вход http поддерживает шаблоны. Вы можете использовать шаблоны при указании path, body, значений заголовков и значений параметров.
Например, следующий фрагмент использует шаблоны для указания индекса для запроса и ограничения результатов документами, добавленными в течение последних пяти минут:
"input" : {
"http" : {
"request" : {
"host" : "host.domain",
"port" : 9200,
"path" : "/{{ctx.watch_id}}/_search",
"body" : "{\"query\" : {\"range\": {\"@timestamp\" : {\"from\": \"{{ctx.trigger.triggered_time}}||-5m\",\"to\": \"{{ctx.trigger.triggered_time}}\"}}}}"
}
}
} Доступ к ответу HTTP
Если тело ответа отформатировано в формате JSON или YAML, оно анализируется и загружается в контекст выполнения. Если тело ответа не отформатировано в формате JSON или YAML, оно загружается в поле _value полезной нагрузки.
Условия, преобразования и действия получают доступ к данным ответа через контекст выполнения. Например, если ответ содержит объект message, вы можете использовать ctx.payload.message для доступа к данным сообщения.
Кроме того, ко всем заголовкам из ответа можно получить доступ, используя поле ctx.payload._headers, а также код HTTP-статуса ответа с помощью ctx.payload._status_code.
Атрибуты ввода HTTP
| Имя | Обязательно | По умолчанию | Описание |
|---|---|---|---|
| нет | http | Схема URL. Допустимые значения: |
| да | - | Хост для подключения. |
| да | - | Порт, на котором прослушивается служба http. |
| нет | - | Путь URL. Путь может быть статическим текстом или содержать |
| нет | get | Метод HTTP. Поддерживаемые значения: |
| нет | - | Заголовки HTTP-запроса. Значения заголовков могут быть статическим текстом или включать в себя |
| нет | - | Параметры строки запроса URL. Значения параметров могут быть статическим текстом или содержать |
| нет | - | Позволяет задать |
| нет | - | Имя пользователя для аутентификации HTTP Basic. |
| нет | - | Пароль для аутентификации HTTP Basic. |
| нет | - | Хост прокси для подключения к хосту. |
| нет | - | Порт прокси для подключения к хосту. |
| нет | 10с | Таймаут для установления соединения http. Если соединение не может быть установлено в течение этого времени, входное значение будет превышать время ожидания и завершится с ошибкой. |
| нет | 10с | Таймаут для чтения данных из соединения http. Если ответ не получен в течение этого времени, входное значение будет превышать время ожидания и завершится с ошибкой. |
| нет | - | Тело HTTP-запроса. Тело может быть статическим текстом или включать в себя |
| нет | - | Массив JSON-ключей для извлечения из ответа ввода и использования в качестве полезной нагрузки. В тех случаях, когда входное значение генерирует большой ответ, это можно использовать для фильтрации соответствующей части ответа, используемой в качестве полезной нагрузки. |
| нет | json | Ожидаемый тип содержимого, который будет содержать тело ответа. Поддерживаемые значения: |
При указании значений path, params, headers и body можно использовать следующие переменные в контексте выполнения:
| Имя | Описание |
|---|---|
| Идентификатор наблюдения, который выполняется в данный момент. |
| Время начала выполнения этого наблюдения. |
| Время срабатывания этого наблюдения. |
| Время, когда это наблюдение должно было сработать. |
| Любые метаданные, связанные с наблюдением. |
© 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/input-http.html