Интеграции (источники данных)
Подключение источников данных в Monq осуществляется через настройку Потока данных.
Подробное руководство по работе с Потоками данных доступно по ссылке.
Сетевые взаимодействия типовых интеграций
| Пример интеграции | Входящие соединения (порт/протокол) | Исходящее соединение (порт/протокол) | Примечание | Используемый шаблон |
|---|---|---|---|---|
| Zabbix | 80,443/tcp | Подключение к API Zabbix | Zabbix default | |
| Zabbix (webhooks) | 80,443/tcp | Отправка данных в Monq | Default template | |
| Zabbix (metrics) | 80,443/tcp | Отправка метрик в Monq | Default template | |
| SCOM | 1433/tcp | Подключение к СУБД SCOM | SCOM default | |
| Prometheus | 80,443/tcp | Отправка данных в Monq | Prometheus default | |
| ntopng | 80,443/tcp | Отправка данных в Monq | ntopng default | |
| Nagios XI | 80,443/tcp | Подключение к API Nagios XI | Nagios default | |
| Nagios Core | 80,443/tcp | Отправка данных в Monq | Default template | |
| Fluentd (Fluent Bit) | 80,443/tcp | Отправка данных в Monq | Default template | |
| Logstash | 80,443/tcp | Отправка данных в Monq | Default template | |
| VMWare vCenter | 80,443/tcp | Подключение к API vCenter | vCenter default |
Подключение источника Zabbix
Для подключения источника данных типа Zabbix, проведите конфигурацию со стороны Zabbix:
- Создайте группу пользователей с правами на чтение к тем узлам сети, данные о которых хотите направлять в Monq. Для создания перейдите в раздел Администрирование -> Группы пользователей и нажмите Создать группу, далее введите имя и выберите группы узлов сети во вкладке Права доступа.
- Создайте пользователя в созданной группе. Для этого перейдите в раздел Администрирование -> Пользователи и нажмите Создать пользователя, в открывшемся окне введите данные пользователя и выберите группу, в которую его необходимо добавить. Скопируйте псевдоним и пароль пользователя для дальнейшей настройки.
Далее перейдите на страницу Потока данных Monq с шаблоном конфигурации Zabbix default, на вкладке Настройка заполните поля:
apiUri- должен содержать URL в форматеhttp://zabbix.example.com/api_jsonrpc.phplogin- логин Zabbixpassword- пароль Zabbix
При необходимости можно отключить проверку достоверности TLS сертификата веб-сервера Zabbix. Для этого активируйте соответствующий переключатель insecureMode в настройках Потока данных.
и нажмите Сохранить.
При необходимости произведите настройку интервалов запуска для Заданий:
- Zabbix - Events Data Flow (по умолчанию - 10 секунд)
- Zabbix - Api Connection Check (по умолчанию - 30 секунд)
- Zabbix - Version Check (по умолчанию - 5 минут)
Нажмите Запустить в правой верхней области страницы для включения Потока данных.
Пример интеграции Zabbix через отправку webhook
Используя данный пример, вы можете реализовать приём данных из любого источника, поддерживающего Webhook.
- Добавьте новый Поток данных или перейдите на страницу настройки существующего потока данных с шаблоном конфигурации Default template и скопируйте API-ключ – он понадобится позднее.
- Настройте отправку сообщений из источника данных (в данном случае – Zabbix):
-
В веб-интерфейсе Zabbix 5.0 перейдите в Администрирование > Способы оповещений и создайте новый тип оповещения. Введите имя, выберите тип Webhook. Заполните таблицу Параметры – содержимое JSON-файла, который будет направлен в Monq:
EventID: {EVENT.ID}
EventName: {EVENT.NAME}
EventSeverity: {EVENT.SEVERITY}
HostName: {HOST.NAME}
TriggerStatus: {TRIGGER.STATUS} -
В поле скрипт скопируйте код на языке JavaScript, формирующий и отправляющий POST-запрос в API вашего пространства Monq:
💡 Скрипт актуален для версии Zabbix 5.4 и выше
var request = new HttpRequest();
params = JSON.parse(value);
request.addHeader('Content-Type: application/json');
response = request.post('https://{GLOBAL_DOMAIN}/api/public/cl/v1/stream-data?streamKey={API-KEY}', JSON.stringify(params));
return 'OK';{GLOBAL_DOMAIN}– адрес вашего пространства Monq, например, sm.monq.cloud.{API-KEY}– API-ключ, скопированный в первом пункте.
-
- Сохраните новый способ оповещения. В разделе Настройка -> Действия настройте реагирование на события Zabbix и в качестве операции выберите созданный метод оповещения.
Пример настройки Zabbix для отправки метрик в Monq
Используя данный пример, вы можете реализовать приём метрических рядов из Zabbix.
Конфигурация производится на стороне Zabbix. Monq в данном случае является принимающей стороной.
Описание формата принимаемых данных в Monq.
Поддерживается в версиях Zabbix 6.4 и выше.
В веб интерфейсе Zabbix перейдите в раздел "Администрирование" - "Общие" - "Коннекторы"
и сконфигурируйте коннектор следующим образом:
URL:
https://<MONQ-FQDN>/api/public/mcs/v1/metrics-collector/zabbix/stream-ndjson?streamKey=<API-ключ потока данных>

⚠️ Необходимо, чтобы в конфигурационном файле Zabbix Server был включен хотя бы один экземпляр
StartConnectors(документация Zabbix).
Пример интеграции с SCOM
Сперва создайте пользователя в базе данных системы SCOM. Для этого подключитесь к целевой базе Operations Manager c помощью клиента СУБД, например, MSSQL, и создайте для нового пользователя:
-
В разделе Общие введите имя пользователя, выберите проверку подлинности SQL Server, введите пароль. Скопируйте имя и пароль – они понадобятся позже.
-
В разделе Роли сервера выберите роль
public. -
В разделе Сопоставление пользователей выберите роли
db_datareaderиpublic.
-
Проверьте итоговый список прав в Защищаемых объектах – разрешения должны включать
CONNECT SQL,VIEW ANY DATABASE,VIEW ANY DEFINITION.
-
Подтвердите создание пользователя – нажмите ОК.
Далее перейдите на страницу настройки потока данных с шаблоном SCOM default и на вкладке Настройка заполните поля:
-
host - Адрес СУБД
-
login - Имя пользователя
-
password - Пароль
-
dbName - Название СУБД -
OperationsManager -
port - Порт подключения к СУБД -
1433
Нажмите Сохранить.
Нажмите Запустить в правой верхней области страницы для включения потока данных.
Пример интеграции с Prometheus
Перейдите на страницу настройки потока данных с шаблоном Prometheus default и скопируйте API-ключ.
Далее произведите настройку файла alertmanager.yaml Prometheus:
-
Добавьте
receiver 'web.hook':receivers:
- name: 'web.hook'
webhook_configs:
- send_resolved: true
url: 'https://{GLOBAL_DOMAIN}/api/public/cl/v1/stream-data?streamKey={API-KEY}'{GLOBAL_DOMAIN}– адрес вашего пространства Monq, например, sm.monq.cloud.{API-KEY}– API-ключ, скопированный со страницы потока данных. -
В блоке
routeдобавьте порядок группировкиgroup_byи способ отправки черезreceiver 'web.hook', заполнить ключgroup_byвручную:route:
group_by: ['<Метки группировки>']
group_wait: 30s
group_interval: 30s
repeat_interval: 1h
receiver: 'web.hook' -
Перезапустите alertmanager.
Пример итогового конфигурационного файла
alertmanager.yamlglobal:
resolve_timeout: 5m
route:
group_by: ['ingress']
group_wait: 30s
group_interval: 30s
repeat_interval: 1h
receiver: 'web.hook'
receivers:
- name: 'web.hook'
webhook_configs:
- send_resolved: true
url: 'https://sm.example.ru/api/public/cl/v1/stream-data?streamKey=e4da3b7f-bbce-2345-d777-2b0674a31z65'
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
Нажмите Запустить в правой верхней области страницы для включения потока данных.
Пример интеграции с Ntopng
Перейдите на страницу настройки потока данных с шаблоном ntopng и скопируйте API-ключ.
Далее перейдите в интерфейс системы ntopng, в раздел Settings -> Preferences -> Alert Endpoints и активируйте переключатель Toggle Webhook Notification. Далее вставьте адрес https://{GLOBAL_DOMAIN}/api/public/cl/v1/stream-data?streamKey={API-KEY} в поле Notification URL.
{GLOBAL_DOMAIN}– адрес вашего пространства Monq, например, sm.monq.cloud.
{API-KEY}– API-ключ, скопированный со страницы потока данных.
Пример интеграции с NagiosXI
В развернутом Nagios добавьте нового пользователя – перейдите в раздел Админ -> Добавить новые учетные записи пользователей -> Добавить нового пользователя. В окне создания пользователя введите имя, пароль, email и отметьте пункты Может видеть все хосты и сервисы, Имеет доступ только для чтения и Доступ к API («Can see all hosts and services», «Read-only access» и «API access»).

Нажмите Добавить пользователя.
Теперь выберите созданного пользователя в списке. На странице пользователя, в блоке Настройки LDAP, скопируйте ключ из поля Ключ API.
Далее перейдите на страницу настройки потока данных в Monq и в блоке Настройка заполните поле apiUri и вставьте скопированный ранее ключ в поле apiKey, нажмите Сохранить.
Нажмите Запустить в правой верхней области страницы для включения потока данных.
Пример интеграции с Nagios Core
В интерфейсе Monq создайте интеграцию типа Default template и скопируйте ключ API.
Nagios Core не имеет нативной поддержки HTTP API интерфейса. Интеграция с системой мониторинга настраивается путем добавления кастомного скрипта оповещения.
⚠️ Данная модель использует следующие статические поля, так как их значения невозможно получить в notification:
INSTANCE_ID="1" OBJECT_ID="1" LAST_HARD_STATE=0
Для конфигурации потока со стороны Nagios:
-
Включите enviroment_macros:
enable_environment_macros=1 -
Добавьте comands:
define command {
command_name send-service-event-to-sm
command_line /usr/local/bin/send_sm 2 > /tmp/sm.log 2>&1
}
define command {
command_name send-host-event-to-sm
command_line /usr/local/bin/send_sm 1 > /tmp/sm.log 2>&1
} -
Добавьте contact:
define contact {
use generic-contact
contact_name sm
alias Service Monitor
service_notification_period 24x7
host_notification_period 24x7
host_notifications_enabled 1
service_notifications_enabled 1
service_notification_options w,u,c,r,f
host_notification_options d,u,r,f
service_notification_commands send-service-event-to-sm
host_notification_commands send-host-event-to-sm
register 1
} -
Измените текущую contactgroup, добавив в нее созданный contact:
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin,sm
} -
Создайте скрипт:
cat > /usr/local/bin/send_sm <<EOF
#!/bin/bash
#############################
##### Define constants ######
#############################
SM_URI="<sm uri with proto>"
CONNECTOR_KEY="<key>"
INSTANCE_ID="1"
OBJECT_ID="1"
LAST_HARD_STATE=0
#################################
##### Define dynamic fields #####
#################################
STATE_TIME=`date '+%F %T'`
OBJECTTYPE_ID=$1
HOST_NAME=$NAGIOS_HOSTNAME
SERVICE_DESCRIPTION=$NAGIOS_SERVICEDESC
if [[ "$1" == "1" ]];then
STATE=$NAGIOS_HOSTSTATEID
LAST_STATE=$NAGIOS_LASTHOSTSTATEID
STATE_TYPE_NAME=$NAGIOS_HOSTSTATETYPE
ATTEMPT=$NAGIOS_HOSTATTEMPT
MAX_ATTEMPTS=$NAGIOS_MAXHOSTATTEMPTS
OUTPUT=$NAGIOS_HOSTOUTPUT
else
STATE=$NAGIOS_SERVICESTATEID
LAST_STATE=$NAGIOS_LASTSERVICESTATEID
STATE_TYPE_NAME=$NAGIOS_SERVICESTATETYPE
ATTEMPT=$NAGIOS_SERVICEATTEMPT
MAX_ATTEMPTS=$NAGIOS_MAXSERVICEATTEMPTS
OUTPUT=$NAGIOS_SERVICEOUTPUT
fi
if [[ "$STATE" != "LAST_STATE" ]];then
STATE_CHANGE=1
else
STATE_CHANGE=0
fi
if [[ "$STATE_TYPE_NAME" == "HARD" ]];then
STATE_TYPE=1
else
STATE_TYPE=0
fi
#############################
##### Send http request #####
#############################
curl -X POST -H "Content-Type: application/json" $SM_URI/api/public/sm/v1/events-aggregator?connectorKey=$CONNECTOR_KEY \
-d "{
\"recordcount\": \"1\",
\"stateentry\": [
{
\"instance_id\": \"$INSTANCE_ID\",
\"state_time\": \"$STATE_TIME\",
\"object_id\": \"$OBJECT_ID\",
\"objecttype_id\": \"$1\",
\"host_name\": \"$HOST_NAME\",
\"service_description\": \"$SERVICE_DESCRIPTION\",
\"state_change\": \"$STATE_CHANGE\",
\"state\": \"$STATE\",
\"state_type\": \"$STATE_TYPE\",
\"current_check_attempt\": \"$ATTEMPT\",
\"max_check_attempts\": \"$MAX_ATTEMPTS\",
\"last_state\": \"$LAST_STATE\",
\"last_hard_state\": \"$LAST_HARD_STATE\",
\"output\": \"$OUTPUT\"
}
]
}"
EOF
chmod +x /usr/local/bin/send_sm -
Перезапустите Nagios Core для приминения конфига.
Пример интеграции с Fluentd
Пример настройки потока данных с внешним сервисом "Fluentd" через шаблон конфигурации Default template
Для отправки журналов (логов) в систему Monq необходимо обеспечить соблюдение следующих условий:
- Лог содержит поле
@timestampв формате"2019-11-02T17:23:59.301361+03:00" - Fluentd отправляет лог в формате
application/json - Отправка происходит через модуль
out_http
Далее сконфигурируйте fluentd:
-
Установите модуль fluentd.
fluent-gem install fluent-plugin-out-http -
Добавьте запись
timestampв лог – для этого добавьте блокfilterв конфигурационный файл, например, для записей с тэгомkubernetes.var.log.containers.nginx-ingress-**.log.<filter kubernetes.var.log.containers.nginx-ingress-**.log>
@type record_transformer
enable_ruby
<record>
@timestamp ${time.strftime('%Y-%m-%dT%H:%M:%S.%6N%:z')}
</record>
</filter> -
Добавьте отправку в Monq в блок отправки данных, используя механизм
@type copy.<match **>
@type copy
<store>
@type stdout
format json
</store>
...
...
</store>
<store>
@type http
endpoint_url https://{GLOBAL_DOMAIN}/api/public/cl/v1/stream-data?streamKey={API-KEY}
http_method post
serializer json
rate_limit_msec 0
raise_on_error false
recoverable_status_codes 503
buffered true
bulk_request false
custom_headers {"X-Smon-Userspace-Id": "1"}
<buffer>
...
</buffer>
</store>
</match>{GLOBAL_DOMAIN}– адрес вашего пространства Monq, например, sm.monq.cloud.{API-KEY}– ключ, скопированный со страницы потока данных Monq. -
Примените настройки и проверьте логи микросервиса
cl-stream-data-collector-serviceв режимеfollow.Если fluentd используется в docker-контейнере внутри kubernetes, пересоберите контейнер с плагином.
В примере используется
fluentd-kubernetes-daemonset:v1.10-debian-elasticsearch7-1.mkdir fluentd-kubernetes; cd fluentd-kubernetes
cat > Dockerfile << EOF
FROM fluent/fluentd-kubernetes-daemonset:v1.10-debian-elasticsearch7-1
RUN fluent-gem install fluent-plugin-out-http
ENTRYPOINT ["tini", "--", "/fluentd/entrypoint.sh"]
EOF
docker build -t fluentd-kubernetes-daemonset:v1.10-debian-elasticsearch7-1_1 .
Нажмите Запустить в правой верхней области страницы для включения потока данных.
Пример интеграции с Fluent Bit
Пример настройки потока данных с внешним сервисом "Fluent Bit" через шаблон конфигурации Default template
Процессор Fluent Bit способен обрабатывать различные форматы. Ниже рассмотрен прием UDP syslog и чтение локального лога файлов docker (см. подробнее о других способах приема данных).
Схема отправки данных в monq

-
На стороне Monq создайте два потока данных с шаблоном конфигурации Default template и скопируйте их API-ключи.
-
Сконфигурируйте Fluent Bit следующим образом:
cat /etc/td-agent-bit/td-agent-bit.conf[SERVICE]
flush 5
daemon Off
log_level info
parsers_file parsers.conf
plugins_file plugins.conf
http_server On
http_listen 0.0.0.0
http_port 2020
storage.metrics on
@INCLUDE inputs.conf
@INCLUDE outputs.conf
@INCLUDE filters.confcat /etc/td-agent-bit/inputs.conf[INPUT]
Name syslog
Parser syslog-rfc3164
Listen 0.0.0.0
Port 514
Mode udp
Tag syslog
[INPUT]
Name tail
Tag docker
Path /var/lib/docker/containers/*/*.log
Parser docker
DB /var/log/flb_docker.db
Mem_Buf_Limit 10MB
Skip_Long_Lines On
Refresh_Interval 10cat /etc/td-agent-bit/outputs.conf[OUTPUT]
Name http
Host ${Monq_URL}
Match syslog
URI /api/public/cl/v1/stream-data
Header x-smon-stream-key ${KEY1}
Header Content-Type application/x-ndjson
Format json_lines
Json_date_key @timestamp
Json_date_format iso8601
allow_duplicated_headers false
[OUTPUT]
Name http
Host ${Monq_URL}
Match docker
URI /api/public/cl/v1/stream-data
Header x-smon-stream-key ${KEY2}
Header Content-Type application/x-ndjson
Format json_lines
Json_date_key @timestamp
Json_date_format iso8601
allow_duplicated_headers false${Monq_URL}– адрес вашего пространства Monq, например, sm.monq.cloud.${KEY1},${KEY2}– API-ключи, скопированные на странице потоков данных Monq. -
После изменения конфигурационных файлов перезапустите Fluent Bit для применения настроек.
В примере используются стандартные парсеры, поставляемые с Fluent Bit. При необходимости, вы можете реализовать новый парсер и разместить его в конфигурации (см. подробнее).
Пример интеграции с Logstash
Рассмотрим приём некоторого лог-файла с некоторого сервера через Logstash.
Создайте в системе Monq поток данных с шаблоном конфигурации Default template и скопируйте API-ключ потока.
Установите на сервере, с которого будут передаваться логи, компонент стека ELK logstash
root@server$ apt-get install logstash
Создайте конфигурационный файл monq-logstash.conf в каталоге с Logstash, следующего содержания:
input {
stdin {
type => "logstash-monq"
}
}
filter {
}
output {
http {
url => "https://{GLOBAL_DOMAIN}/api/public/cl/v1/stream-data?streamKey={API-KEY}"
http_method => "post"
}
}
{GLOBAL_DOMAIN}- адрес вашего пространства Monq, например, sm.monq.cloud
{API-KEY}– API-ключ, скопированный со страницы потока данных.
В данном примере, передача лог-файла в Monq, осуществляется через стандартный ввод <STDIN> без дополнительной обработки и фильтрации со стороны logstash.
За дополнительной информацией по работе с logstash обращайтесь к документации
ELK.
Запустите на сервере с logstash, для отправки лог-файла, следующую команду:
root@server$ cat {лог-файл} | nice /usr/share/logstash/bin/logstash -f monq-logstash.conf
Перейдите на экран Первичные события платформы Monq, в списке потоков выберите созданную ранее интеграцию и просмотрите полученные данные из лог-файла.
Пример интеграции с VMWare vCenter
Настройка Потока данных vCenter
Для получения событий синхронизации топологии и событий миграции виртуальных машин в VMWare vSphere с последующим построением Ресурсно-сервисной модели, выполните следующие действия:
Перед тем как вы будете подключать свой экземпляр vCenter к Monq, убедитесь, что иерархия объектов в вашем vCenter выстроена в следующем порядке: Datacenter <- Cluster <- Host <- Virtual Machine.
-
Создайте Поток данных с шаблоном конфигурации vCenter default.
-
Перейдите на страницу Потока данных и на вкладке Настройка заполните поля:
-
apiUri- адрес по которому доступен WEB-интерфейс VMWare vCenter (указание протокола не требуется).⚠️
apiUriдолжен содержать URL в форматеvcenter.company.comбез указания протокола и пути к SDK -
login- пользователь системы vCenter, обладающий достаточными правами для получения событий об изменении топологии или отдельно взятых сущностей, в синхронизации состояния которых заинтересован пользователь. -
password- пароль пользователя системы vCenter
ИнформацияВ случая, если нет сетевой связанности между Monq и сервером vCenter (по портам 80/tcp и 443/tcp) - необходимо установить и подключить Агент Monq на промежуточном сервере
- Подключите Агент Monq - инструкция
- Перейдите на вкладку Конфигурация Потока данных vCenter.
- Для Заданий по сбору данных с "VMWare vCenter" назначьте метки Координатора, у которого подключенный Агент имеет сетевой доступ к серверу vCenter .
-
-
Нажмите Сохранить для сохранения настроек Потока данных.
-
Нажмите Запустить в правой верхней области страницы для включения Потока данных.
Поток данных vCenter поддерживает сбор следующих типов событий:
VmMigratedEventDrsVmMigratedEventHostAddedEventHostRemovedEventVmCreatedEventVmRemovedEvent
Автопостроение РСМ из vCenter
Для настройки автоматического создания ресурсно-сервисной модели в Monq необходимо импортировать сценарии автоматизации CMDB Autobuild/vCenter из GitHub Monq.
Подробнее об импорте сценариев в разделе Автоматизация.
vCenter Topology.txt- сценарий обработки событий топологииvCenter VM Created.txt- сценарий обработки событий создания виртуальных серверовvCenter VM Migrated.txt- сценарий обработки событий миграции виртуальных серверовvCenter VM Removed.txt- сценарий обработки событий удаления виртуальных серверов
Синхронизация всей топологии будет выполняться с интервалом заданным для задания vCenter - TopologySync в конфигурации потока данных vCenter. По умолчанию: 1 день.
Обновление информации об изменениях в vCenter будет выполняться с интервалом заданным для задания vCenter - EventsDataFlow в конфигурации потока данных vCenter. По умолчанию: 30 сек.
Обновляется информация об изменениях:
- Создание/удаление виртуальных машин и хостов
- Миграция виртуальных машин (ручная/автоматическая)
После выполнения задания синхронизации топологии настройте Карту РСМ, используя Параметрический фильтр для добавления КЕ на карту.
Владельцем автоматически созданных КЕ является Рабочая группа, которая в свою очередь является владельцем потока данных vCenter и владельцем сценария автоматизации.