Agent HTTP Plugin
Общие сведения
Плагин httpPlugin
является встроенным модулем в приложение агента Monq.
Agent HTTP Plugin позволяет выполнять HTTP запросы, заданные пользователем в Потоке данных в виде YAML сценария, и в отличии от первой версии поддерживает все методы HTTP запросов.
Во второй версии HTTP плагина, отправка событий (ответ на HTTP запрос) в коллектор Monq осуществляется в виде артефакта и может гибко конфигурироваться в YAML сценарии при помощи передачи результатов между шагами сценария и формирования итоговой модели события.
Актуальную версию агента Monq со встроенным плагином можно загрузить по следующим ссылкам:
Формат сценария HTTP плагина
name: HTTP Request
jobs:
- name: HTTP Request
steps:
- plugin: httpPlugin
with:
url: {url}
method: {GET | POST | PUT | DELETE | etc...}
headers:
{header_name}: {header_value}
{header_name}: {header_value}
...
mediaType: {type}
body: "{...}"
basicauth:
login: {login}
password: {password}
port: {port_number}
proxy:
address: {url}
bypasslist:
- {url}
- {url}
...
credentials:
login: {login}
password: {password}
redirects: {true | false}
insecure: {true | false}
queryparams:
{param_name}: {param_value}
{param_name}: {param_value}
outputs:
result: $._outputs.responseData
artifacts:
- data: '{{ outputs.result }}'
send-to:
api:
uri: "{{ baseUri }}api/public/cl/v1/stream-data"
headers:
x-smon-stream-key: $.vars.stream.key
media-type: application/json
Параметры конфигурации используемые в сценарии
Параметр | Тип | Значение по умолчанию | Описание |
---|---|---|---|
url | String | нет | URL ресурса, к которому будет выполнятся запрос |
method | String | GET | HTTP метод запроса |
streamId | String | нет | Идентификатор текущего потока ($.vars.stream.id ) |
streamKey | String | нет | API ключ текущего потока ($.vars.stream.key ) |
headers | list[] | нет | Список заголовков запроса |
mediaType | String | нет | Тип контента |
body | String | нет | Тело запроса (обязательно в кавычках) |
basicauth: login | String | нет | Логин Basic Auth |
basicauth: password | String | нет | Пароль Basic Auth |
port | Integer | нет | Числовое значение порта сервера, к которому будет обращен запрос |
proxy: address | String | нет | URL прокси-сервера, через который будет проходить запрос |
proxy: bypasslist | String | нет | Массив адресов или регулярных выражений, описывающих адресы, при запросах к которым не будет использоваться прокси |
proxy: credentials: login | String | нет | Логин для http-аутентификации на proxy-сервере |
proxy: credentials: password | String | нет | Пароль для http-аутентификации на proxy-сервере |
redirects | Boolean | False | Параметр, позволяющий запросу следовать перенаправлениям |
insecure | Boolean | False | Параметр, позволяющий запросу выполнять небезопасное SSL подключение |
queryparams | list[] | нет | Список переменных параметров запроса |
- url - URL ресурса, к которому будет выполнятся запрос
- method - HTTP метод запроса
- streamId - Идентификатор текущего потока (
$.vars.stream.id
) - streamKey - API ключ текущего потока (
$.vars.stream.key
)
-
Параметр
headers
указывается в следующем формате:headers:
Accept: "application/json"
{header_name1}: {header_value1}
{header_name2}: {header_value2}
{header_name3}: {header_value3} -
Параметр
queryparams
указывается в следующем формате:queryparams:
key: my_key
{param_name1}: {param_value1}
{param_name2}: {param_value2}
{param_name3}: {param_value3}💡 Если параметры запроса одновременно указаны в
url
и в качестве параметровqueryparams
в Задании, итоговый запрос будет содержать все параметры
Шаблон ответа
Ответ на запрос от сервера парсится и преобразовывается в следующий JSON формат:
{
"StatusCode": "200",
"Headers": [
{
"Key": "",
"Value": [
""
]
}
],
"IsSuccessStatusCode": true,
"ResponseData": {},
"Error": ""
}
StatusCode
- код HTTP ответаHeaders
- массив заголовков ответаResponseData
- данные в текстовом формате, полученные в ответеIsSuccessStatusCode
- флаг успешности запроса (true/false)Error
- текст ошибки, еслиIsSuccessStatusCode
==false
Пример выполнения запроса к Zabbix API
name: Zabbix Request
jobs:
- name: Zabbix Request
steps:
- plugin: httpPlugin
with:
url: https://zabbix.domain.ru/api_jsonrpc.php
streamId: $.vars.stream.id
streamKey: $.vars.stream.key
method: POST
mediaType: application/json
headers:
Content-Type: application/json
body: '{"jsonrpc":"2.0","method":"host.get","id":2,"auth":"{token}","params":{"output":["hostid","host","maintenance_status","name","status"]}}'
outputs:
hosts: $._outputs.responseData
artifacts:
- data: '{{ outputs.hosts }}'
send-to:
api:
uri: "{{ baseUri }}api/public/cl/v1/stream-data"
headers:
x-smon-stream-key: $.vars.stream.key
media-type: application/json
Пример выполнения запроса к VeeamOne API
name: Get Virtual Servers Backups
jobs:
- steps:
- name: Get Access Token
plugin: httpPlugin
with:
method: POST
url: "{{ vars.stream.params.veeamDomain }}/api/token"
headers:
Content-Type: "application/x-www-form-urlencoded"
mediaType: application/x-www-form-urlencoded
insecure: true
queryparams:
username: "{{ vars.stream.params.username }}"
password: "{{ vars.stream.params.password }}"
grant_type: "password"
refresh_token: ""
body: "login"
outputs:
access_token: $._outputs.responseData.access_token
- name: Get Virtual Machines
plugin: httpPlugin
with:
method: GET
url: "{{ vars.stream.params.veeamDomain }}/api/v2.1/protectedData/virtualMachines"
headers:
Authorization: "Bearer {{ outputs.access_token }}"
insecure: true
body: "get"
outputs:
vm_data: $._outputs.responseData
artifacts:
- data: >
{
"vmData":{{ outputs.vm_data }}
}
send-to:
api:
uri: "{{ baseUri }}api/public/cl/v1/stream-data"
headers:
x-smon-stream-key: $.vars.stream.key
media-type: application/json