Перейти к основному содержимому
Версия: 7.15

Agent HTTP Plugin 2

Общие сведения

Плагин httpPlugin2 является второй версией плагина httpPlugin. В настоящий момент плагин httpPlugin2 не встроен в приложение агента Monq и устанавливается отдельно при необходимости (инструкция).

В ближайшем мажорном релизе monq-agent планируется внедрения httpPlugin2 плагина, как модуля приложения monq-agent.

Agent HTTP Plugin 2 позволяет выполнять HTTP запросы, заданные пользователем в Потоке данных в виде YAML сценария, и в отличии от первой версии поддерживает все методы HTTP запросов.

Во второй версии HTTP плагина, отправка событий (ответ на HTTP запрос) в коллектор Monq осуществляется в виде артефакта и может гибко конфигурироваться в YAML сценарии при помощи передачи результатов между шагами сценария и формирования итоговой модели события.

Актуальную версию плагина httpPlugin2 агента Monq можно загрузить по следующей ссылке.

Формат сценария HTTP плагина

name: HTTP Request
jobs:
- name: HTTP Request
steps:
- plugin: httpPlugin2
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

Параметры конфигурации используемые в сценарии

ПараметрТипЗначение по умолчаниюОписание
urlStringнетURL ресурса, к которому будет выполнятся запрос
methodStringGETHTTP метод запроса
streamIdStringнетИдентификатор текущего потока ($.vars.stream.id)
streamKeyStringнетAPI ключ текущего потока ($.vars.stream.key)
headerslist[]нетСписок заголовков запроса
mediaTypeStringнетТип контента
bodyStringнетТело запроса (обязательно в кавычках)
basicauth: loginStringнетЛогин Basic Auth
basicauth: passwordStringнетПароль Basic Auth
portIntegerнетЧисловое значение порта сервера, к которому будет обращен запрос
proxy: addressStringнетURL прокси-сервера, через который будет проходить запрос
proxy: bypasslistStringнетМассив адресов или регулярных выражений, описывающих адресы, при запросах к которым не будет использоваться прокси
proxy: credentials: loginStringнетЛогин для http-аутентификации на proxy-сервере
proxy: credentials: passwordStringнетПароль для http-аутентификации на proxy-сервере
redirectsBooleanFalseПараметр, позволяющий запросу следовать перенаправлениям
insecureBooleanFalseПараметр, позволяющий запросу выполнять небезопасное SSL подключение
queryparamslist[]нетСписок переменных параметров запроса
Обязательные параметры
  • 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: httpPlugin2
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: httpPlugin2
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: httpPlugin2
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