# Шаблоны конфигурации потоков

Для потоков данных доступны предустановленные шаблоны конфигурации:

Название Назначение Примечание
Без шаблона Получение первичных событий JSON без дальнейшей обработки синтетическими триггерами (push) Есть возможность добавления обработчиков своих и предустановленных.
AnyStream default Получение первичных событий JSON с дальнейшей обработкой синтетическими триггерами (push) Есть возможность добавления обработчиков своих и предустановленных.
Zabbix default Получение алертов из Zabbix (pull) Проверена совместимость с Zabbix версий 2.4+.
SCOM default Интеграция с Microsoft System Center Operations Manager (pull) Проверена совместимость с SCOM v.1806-1809.
Prometheus default Получение событий из Prometheus (push) Получение данных через публичный API monq Collector.
ntopng default Получение событий из ntopng (push) Получение данных через публичный API monq Collector. Версии 4.0+
Nagios default Получение событий из Nagios XI (pull) Проверена совместимость с Nagios 4.3.x-4.4.x
vCenter default Получение данных об изменениях топологии (pull) Проверена совместимость с vCenter 6.7

# Конфигурация Без шаблона

Шаблон конфигурации "Без шаблона" используется подключения Информационных систем, шаблон для которых отсутствует в monq.

Принцип передачи событий основан на авторизованном POST-запросе к Публичному API monq используя API-ключ.

События, принятые через Поток данных "Без шаблона", не направляются на обработку в префильтр (условие) "Синтетических триггеров".

Шаблон конфигурации "Без шаблона" доступен пользователю для построения собственных интеграций путем написания сценариев Заданий и правил Обработчиков, а также возможностью выбора Заданий и Обработчиков из предложенного списка.

Если события требуется обрабатывать правилами Синтетических триггеров - используйте Шаблон конфигурации Потока данных AnyStream default.

# Задания

Предустановленные задания у данного шаблона конфигурации отсутствуют. Пользователю доступно добавление новых заданий.

# Обработчики

Предустановленные обработчики у данного шаблона конфигурации отсутствуют.

Пользователю доступно создание новых сценариев обработки входящих событий (документация).

# Конфигурация AnyStream default

Шаблон конфигурации "AnyStream default" используется подключения Информационных систем, шаблон для которых отсутствует в monq.

Принцип передачи событий основан на авторизованном POST-запросе к Публичному API monq используя API-ключ.

События, принятые через Поток данных "AnyStream default", направляются на обработку в префильтр (условие) "Синтетических триггеров".

Шаблон конфигурации "AnyStream default" доступен пользователю для построения собственных интеграций путем написания сценариев Заданий и правил Обработчиков, а также возможностью выбора Заданий и Обработчиков из предложенного списка.

Если события не требуется обрабатывать правилами Синтетических триггеров - используйте Шаблон конфигурации Потока данных Без шаблона.

# Задания

Предустановленные задания у данного шаблона конфигурации отсутствуют. Пользователю доступно добавление новых заданий.

# Обработчики

В шаблоне "AnyStream default" по умолчанию инициализируется сценарий обработчика, который добавляет событию метку postRouting:cl.stream-ready-event.new для дальнейшей маршрутизации события.

Пользователю доступно редактирование сценария обработки входящих событий (документация).

# Конфигурация Zabbix default

Шаблон конфигурации предназначен для интеграции "monq Collector" с системой мониторинга Zabbix

# Задания

  • "Zabbix - Version Check" - получение актуальной версии подключенного сервера Zabbix
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 5 мин
  • "Zabbix - Api Connection Check" - проверка состояния соединения с API Zabbix
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 30 сек
  • "Zabbix - Events Data Flow" - получение данных из Zabbix
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 10 сек

Пользователю доступно добавление новых заданий к предустановленным.

# Обработчики

В шаблоне *"Zabbix default"*Пользователю доступно редактирование сценария обработки входящих событий (документация). добавляет событию метки:

  • Метку type:Zabbix.
  • Метку postRouting:cl.stream-ready-event.zabbix.new для дальнейшей маршрутизации события.

Пользователю доступно редактирование сценария обработки входящих событий (документация).

# Конфигурация SCOM default

Шаблон конфигурации предназначен для интеграции с системой мониторинга Microsoft SCOM.

# Задания

  • "Scom - Events Data Flow" - получение данных из SCOM
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 10 сек
  • "Scom - Database Connection Check" - проверка соединения с БД SCOM
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 30 сек

Пользователю доступно добавление новых заданий к предустановленным.

# Обработчики

В шаблоне "SCOM default" по умолчанию инициализируется сценарий обработчика, который добавляет событию метки:

  • Метку type:SCOM.
  • Метку postRouting:cl.stream-ready-event.new для дальнейшей маршрутизации события.

Пользователю доступно редактирование сценария обработки входящих событий (документация).

# Конфигурация Prometheus default

Шаблон конфигурации предназначен для интеграции с системой мониторинга Prometheus - AlertsManager

# Задания

Предустановленные задания у данного шаблона конфигурации отсутствуют. Пользователю доступно добавление новых заданий.

# Обработчики

В шаблоне конфигурации "Prometheus default" по умолчанию инициализируется сценарий обработчика, который

  • парсит входящий поток в удобный для monq формат
  • добавляет необходимые метки для дальнейшей маршрутизации события

# Исходный код стандартного парсера Prometheus

namespace Automaton.Cl.Extensions
{
    public static class PrometheusParserGlobalFunc
    {
        public static FuncResult<(Automaton.Cl.ProcessedCollectorLogEvent Result, string Error)> PrometheusParser(Automaton.Cl.RawCollectorLogEvent Event)
        {
            string ConvertDateTime(string date)
            {
                 var pattern = @"(\d+)-(\d+)-(\d+)(\D)(\d+):(\d+):(\d+.\d*)(\w)";
                var array = System.Text.RegularExpressions.Regex.Split(date, pattern).Where(x => x != "").ToArray();
                var xyear = array[0];
                var xmonth = array[1];
                var xday = array[2];
                var xdelimit = array[3];
                var xhour = array[4];
                var xminute = array[5];
                var xseconds = array[6];
                var xoffset = array[7];
                
                xseconds = xseconds.Length >= 6 ? xseconds.Substring(0, 6) : xseconds;

                var result = string.Format("{0}-{1}-{2}{3}{4}:{5}:{6}{7}", xyear, xmonth, xday, xdelimit, xhour, xminute, xseconds, xoffset);
                return result;
            }

            System.Text.Json.Nodes.JsonNode ParseAlerts(System.Text.Json.Nodes.JsonArray alerts)
            {
                foreach (var allertsNode in alerts)
                {
                    var startsAt = allertsNode["startsAt"].ToString();
                    var endsAt = allertsNode["endsAt"].ToString();
                    allertsNode["startsAt"] = System.Text.Json.Nodes.JsonValue.Create(ConvertDateTime(startsAt));
                    allertsNode["endsAt"] = System.Text.Json.Nodes.JsonValue.Create(ConvertDateTime(endsAt));
                }

                return alerts;
            }

            var processedLogEvent = new Automaton.Cl.ProcessedCollectorLogEvent()
            { _aggregatedAt = Event._aggregatedAt, _rawId = Event._rawId, _sourceType = Event._sourceType, _stream = Event._stream, _userspaceId = Event._userspaceId };
            var alertsList = new List<System.Text.Json.Nodes.JsonNode>();
            try
            {
                var jsonArray = System.Text.Json.Nodes.JsonNode.Parse(Event.source).AsArray();
                foreach (var jsonNode in jsonArray)
                {
                    var alertsNode = jsonNode["alerts"]?.AsArray();
                    if (alertsNode == null)
                        return new FuncResult<(Automaton.Cl.ProcessedCollectorLogEvent Result, string Error)>("Failed", (processedLogEvent, "The event is not a Prometheus event."));
                    var parsedAlerts = ParseAlerts(alertsNode);
                    foreach (var alert in parsedAlerts.AsArray())
                        alertsList.Add(alert);

                }
            }
            catch (Exception e)
            {
                var source = System.Text.Json.Nodes.JsonNode.Parse(Event.source);
                var alertsNode = source["alerts"]?.AsArray();
                if (alertsNode == null)
                    return new FuncResult<(Automaton.Cl.ProcessedCollectorLogEvent Result, string Error)>("Failed", (processedLogEvent, "The event is not a Prometheus event."));
                var result = ParseAlerts(alertsNode).AsArray();
                foreach (var alert in result)
                    alertsList.Add(alert);
            }

            var json = System.Text.Json.JsonSerializer.Serialize(alertsList);
            processedLogEvent.source = json;
            return new FuncResult<(Automaton.Cl.ProcessedCollectorLogEvent Result, string Error)>("Ok", (processedLogEvent, ""));
        }
    }
}

# Конфигурация ntopng default

Шаблон конфигурации предназначен для интеграции с системой мониторинга ntopng

# Задания

Предустановленные задания у данного шаблона конфигурации отсутствуют. Пользователю доступно добавление новых заданий.

# Обработчики

В шаблоне "ntopng default" по умолчанию инициализируется сценарий обработчика, который добавляет событию метки:

  • Метку type:Ntop.
  • Метку postRouting:cl.stream-ready-event.new для дальнейшей маршрутизации события.

Пользователю доступно редактирование сценария обработки входящих событий (документация).

# Конфигурация Nagios default

Шаблон конфигурации предназначен для интеграции с системой мониторинга Nagios XI

# Задания

  • "Nagios - Events Data Flow" - получение данных из Nagios XI
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 10 сек
  • "Nagios - Api Connection Check" - проверка соединения с БД Nagios
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 30 сек

Пользователю доступно добавление новых заданий к предустановленным.

# Обработчики

В шаблоне "Nagios default" по умолчанию инициализируется сценарий обработчика, который добавляет событию метки:

  • Метку type:Nagios.
  • Метку postRouting:cl.stream-ready-event.new для дальнейшей маршрутизации события.

Пользователю доступно редактирование сценария обработки входящих событий (документация).

# Конфигурация vCenter default

Шаблон конфигурации предназначен для интеграции с системой управления VMWare vCenter

# Задания

  • "vCenter - TopologySync" - обеспечивает передачу данных о состоянии всей топологии vCenter, доступной пользователю
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 24 часа
  • "vCenter - EventsDataFlow" - обеспечивает передачу событий об изменении состава топологии в vCenter
    • Агент - SharedAgents - системный агент по умолчанию, доступен для изменения на внешние агенты
    • Интервал запуска по умолчанию - 30 сек

Пользователю доступно добавление новых заданий к предустановленным.

# Обработчики

В шаблоне "vCenter default" по умолчанию инициализируется сценарий обработчика, который добавляет событию метки:

  • Метку type:vcenter.
  • Метку postRouting:cl.stream-ready-event.new для дальнейшей маршрутизации события.

Пользователю доступно редактирование сценария обработки входящих событий (документация).