Вход 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>"
}
}
}
} Использование аутентификации на основе токенов
Вы также можете вызывать API, используя Bearer token вместо базовой аутентификации. Объект request.headers содержит HTTP-заголовки:
"input" : {
"http" : {
"request" : {
"url": "https://api.example.com/v1/something",
"headers": {
"authorization" : "Bearer ABCD1234...",
"content-type": "application/json"
# other headers params..
},
"connection_timeout": "30s"
}
}
} Использование шаблонов
Вход 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/8.17/input-http.html