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

Обработчики

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

Обработчики предназначены для нормализации входящих данных перед записью в хранилище.

Ниже приведен список доступных обработчиков для текущей версии системы.

Важно

Собранные с помощью плагинов событийные данные от Monq Agent всегда приходят в виде JSON.
Пример: лог Nginx, собранный плагином Tail, будет доставлен не как строка, а как
{"data": "...", "sourceFile": "/var/log/nginx/access.log", "hostname": "..."}

Обработчики Nginx, Apache, Docker — работают только с сырыми строками и не смогут обработать такой JSON.

Используйте

Json, JsonArray или настройте обработчик Automaton на извлечение необходимых полей

Общие функции

Дополнительные поля

Практически для всех видов обработчиков доступно обогащение входных данных дополнительными полями. Исключением является обработчик Automaton, в котором обогащение производится в сценарии автоматизации.

Изображение

Дополнительные поля добавляются к входящим данным, записываются в хранилище, а также отправляются на пост-обработку, если она включена.

Если название дополнительного поля совпадает с полем в исходном событии, то значение исходного события будет перезаписано значением дополнительного поля.

Обработчик Json

Формат: Произвольный валидный JSON

Примечания:

  • Парсер будет обрабатывать только найденные пары ключ-значение (все что не является объектом будет игнорироваться)
  • В случае работы с массивом парсер обработает его как массив ключ-значений, и в базу запишет как одно событие
  • Если отправляется пустой объект или массив, то он не записывается, предупреждение отправляется в журнал ошибок
  • Вложенные поля, имеющие значение пустого массива, пустого объекта или null, записываются пустой строкой

Опции настройки метки времени:

  • Использовать время получения лога системой

    Изображение

    При выборе данной опции, время в логе будет проставлено в тот момент когда лог пришел в систему

  • Извлечь из JSON

    Изображение

    При выборе данной опции требуется заполнение параметров:

    • Путь к полю - используется JSONPath-путь, например $.timestamp
    • Формат времени - формат метки времени, например "dd.MM.yyyy HH:mm:ss zzz". Для Unix-секунд используйте uts, для миллисекунд utms
  • Найти через регулярное выражение

    Изображение

    При выборе данной опции требуется заполнение параметров:

    • Регулярное выражение - шаблон поиска метки времени в логе, например \d{4}-\d{2}-\d{2}Т\d{2}:\d{2}:\d{2}Z

    • Формат времени - формат метки времени, например "dd.MM.yyyy HH:mm:ss zzz". Для Unix-секунд используйте uts, для миллисекунд utms

Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется ИСХОДНЫЙ лог до парсинга + дополнительные пользовательские поля (добавляются в json лога перед отправкой).

Пример обработки лога:

  • Входящее событие

    {
    "level": "error",
    "timestamp": "2024-02-15T08:30:45Z",
    "numbers": [60, 20],
    "details": {
    "service": "auth",
    "error": "Permission denied"
    }
    }
  • Результат обработки

    {
    "level": "error",
    "timestamp": "2024-02-15T08:30:45Z",
    "numbers[0]": "60",
    "numbers[1]": "20",
    "details.service": "auth",
    "details.error": "Permission denied"
    }

Обработчик NdJson

Формат: Список произвольных валидных JSON событий, разделенных "новой строкой"

Примечания:

  • Каждая строка парсится как отдельный Json

Опции настройки метки времени идентичны обработчику Json

Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется ИСХОДНЫЙ лог до парсинга + дополнительные пользовательские поля. Каждый JSON внутри NdJson будет отправлен отдельным сообщением в исходном виде до преобразования в плоский словарь значений. Также к каждому сообщению будут добавлены дополнительные поля.

Пример обработки лога:

  • Входящее событие

    {"event": "start", "time": "04:04:04"}
    {"event": "error", "code": 500, "message": "Internal error", "time": "06:06:06"}
  • Результат обработки

    // Первое сообщение
    {
    "event": "start",
    "time": "04:04:04"
    },
    // Второе сообщение
    {
    "event": "error",
    "code": "500",
    "message": "Internal error",
    "time": "06:06:06"
    }

Обработчик JsonArray

Формат: Список произвольных валидных JSON событий, разделенных запятой (пример, [{},{},{}])

Примечания:

  • Каждая строка парсится как отдельный Json

Опции настройки метки времени идентичны обработчику Json

Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется ИСХОДНЫЙ лог до парсинга + дополнительные пользовательские поля.

Пример обработки лога:

  • Входящее событие

    [
    {
    "name": "Alex",
    "age": 32,
    "city": "New York",
    "hobbies": [
    "reading",
    "music"
    ],
    "address": {
    "street": "123 Main St",
    "number": "456",
    "city": "New York",
    "state": "NY"
    },
    "data": {
    "datetime": "2024-01-15T10:30:00+01:00"
    }
    },
    {
    "name": "Bob",
    "age": 53,
    "city": "Florida",
    "hobbies": [
    "sports"
    ]
    }
    ]
  • Результат обработки

    // Первый лог
    {
    "name": "Alex",
    "age": "32",
    "city": "New York",
    "hobbies[0]": "reading",
    "hobbies[1]": "music",
    "address.street": "123 Main St",
    "address.number": "456",
    "address.city": "New York",
    "address.state": "NY",
    "data.datetime": "2024-01-15T10:30:00+01:00"
    }
    // Второй лог
    {
    "name": "Bob",
    "age": "53",
    "city": "Florida",
    "hobbies[0]": "sports"
    }

Обработчик Xml

Формат: Произвольный валидный XML

Примечания:

  • Содержащиеся в XML массивы обрабатываются и формируются через подчеркивание
  • В XML у элементов массива существуют названия, эти названия будут содержаться в результирующем формате JSON
  • Пространство имен будет проигнорировано

Опции настройки метки времени:

  • Использовать время получения лога системой

    Изображение

    При выборе данной опции, время в логе будет проставлено в тот момент когда лог пришел в систему

  • Извлечь из XML

    Изображение

    При выборе данной опции требуется заполнение параметров:

    • Путь к полю - используется xPath-путь, например $.timestamp
    • Формат времени - формат метки времени, например "dd.MM.yyyy HH:mm:ss zzz". Для Unix-секунд используйте uts, для миллисекунд utms
  • Найти через регулярное выражение

    Изображение

    При выборе данной опции требуется заполнение параметров:

    • Регулярное выражение - шаблон поиска метки времени в логе, например \d{4}-\d{2}-\d{2}Т\d{2}:\d{2}:\d{2}Z

    • Формат времени - формат метки времени, например "dd.MM.yyyy HH:mm:ss zzz". Для Unix-секунд используйте uts, для миллисекунд utms

Примечание

В случае если включена "Постобработка", то на постобработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Пример обработки лога:

  • Входящее событие

    <?xml version="1.0" encoding="UTF-8"?>
    <order>
    <orderId>12345</orderId>
    <customer>
    <name>John Doe</name>
    <email>john.doe@example.com</email>
    </customer>
    <items>
    <item>
    <productId>A123</productId>
    <quantity>2</quantity>
    </item>
    <item>
    <productId>B456</productId>
    <quantity>1</quantity>
    </item>
    </items>
    </order>
  • Результат обработки

    {
    "?xml@version": "1.0",
    "?xml@encoding": "UTF-8",
    "order.orderId": "12345",
    "order.customer.name": "John Doe",
    "order.customer.email": "john.doe@example.com",
    "order.items.item_0.productId": "A123",
    "order.items.item_0.quantity": "2",
    "order.items.item_1.productId": "B456",
    "order.items.item_1.quantity": "1"
    }

Если в XML есть метаданные, например <?xml version="1.0" encoding="UTF-8" standalone="yes"?>, они будут записаны следующим образом:

{
"?xml@version": "1.0",
"?xml@encoding": "UTF-8",
"?xml@standalone": "yes"
}

Обработчик Nginx

Формат: Стандартный лог Nginx (настройки по умолчанию)

Примечания:

  • Не предполагается работа парсера с журналом ошибок Nginx (error_log)

Опции настройки метки времени: отсутствуют, временная метка будет записана та, которая указана внутри самого лога.

Пример обработки лога:

  • Входящее событие

    81.94.230.132 - - [01/Jul/2025:07:17:00 +0300] "GET /favicon.ico HTTP/1.1" 404 197 "http://example.com/" "Mozilla/5.0"
  • Результат обработки

    {
    "remote_addr": "81.94.230.132",
    "host": "-",
    "remote_user": "-",
    "time_local": "01/Jul/2025:07:17:00",
    "request_method": "GET",
    "request_path": "/favicon.ico",
    "request_protocol": "HTTP/1.1",
    "status": "404",
    "body_bytes_sent": "197",
    "http_referer": "http://example.com/",
    "http_user_agent": "Mozilla/5.0"
    }
Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Обработчик Regex

Формат: текстовые данные произвольного формата

Опции парсера:

  • Шаблон парсинга - регулярное выражение с именованными группами для извлечения данных, например \[(?<level>\w+)\].*?\|UserID:(?<userid>\d+). Поле является опциональным. Если не указать регулярное выражение, весь лог будет записан в поле с ключом value.

  • MultimatchRegex - булевый параметр, определяющий поведение регулярного выражения при обработке текста, когда возможны множественные совпадения шаблона в одной строке.

    • false (по умолчанию) - регулярное выражение ищет только первое совпадение в тексте
    • true - обработчик выявляет все возможные совпадения шаблона в данных

Опции настройки метки времени:

  • Использовать время получения лога системой

    Изображение

    При выборе данной опции, время в логе будет проставлено в тот момент когда лог пришел в систему

  • Найти через регулярное выражение

    Изображение

    При выборе данной опции требуется заполнение параметров:

    • Регулярное выражение - шаблон поиска метки времени в логе, например \d{4}-\d{2}-\d{2}Т\d{2}:\d{2}:\d{2}Z

    • Формат времени - формат метки времени, например "dd.MM.yyyy HH:mm:ss zzz". Для Unix-секунд используйте uts, для миллисекунд utms

Пример обработки лога:

  • Если MultimatchRegex = false

    • Текст на входе: 192.168.2.20 - [29/Jul/2015:10:27:10 -0300] \"GET /cgi-bin/try/ HTTP/1.0\" 200 3395

    • Регулярное выражение:

      ^(?<remoteAddr>[^ ]*) (?<remoteUser>[^ ]*) \[(?<timeLocal>.*)] "(?<requestMethod>[^ ]*) (?<requestPath>[^ ]*) (?<requestProtocol>[^ ]*)" (?<status>[^ ]*) (?<bodyBytesSent>[^ ]*)$
    • Результат после парсинга:

      {
      "remoteAddr": "192.168.2.20",
      "remoteUser": "-",
      "timeLocal": "29/Jul/2015:10:27:10 -0300",
      "requestMethod": "GET",
      "requestPath": "/cgi-bin/try/",
      "requestProtocol": "HTTP/1.0",
      "status": "200",
      "bodyBytesSent": "3395"
      }
  • Если MultimatchRegex = true:

    • Текст на входе: user: Alex, status: Info, details: Something broke, timestamp: 20.11.2024 13:52:04

    • Регулярное выражение:

      ?((?<key>[^\s]*): ?)( (?<value>[^,]*),?)
    • Результат после парсинга:

      {
      "user": "Alex",
      "status": "Info",
      "details": "Something broke",
      "timestamp": "20.11.2024 13:52:04"
      }

    В результате применения регулярного выражения происходят множественные совпадения. В каждом совпадении группа key захватывает название ключа, а группа value захватывает значение под этим ключом. Таким образом формируется результирующий словарь произвольного размера.

Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Обработчик FullRequest

Формат: Произвольный HTTP запрос любого формата

Примечания:

  • Обработчик обогащает входящие данные, добавляя заголовки, параметры запроса и теле в структуру JSON
  • Заголовки и параметры добавляются к результату, а body превращается в плоский словарь, если это валидный JSON
  • Если JSON не валидный, то лог записывается строкой под ключом body
  • В лог не будут добавляться системные заголовки

Опции настройки метки времени:

  • Использовать время получения лога системой

    Изображение

    При выборе данной опции, время в логе будет проставлено в тот момент когда лог пришел в систему

  • Извлечь из JSON

    Изображение

    При выборе данной опции требуется заполнение параметров:

    • Путь к полю - используется JSONPath-путь, например $.timestamp
    • Формат времени - формат метки времени, например "dd.MM.yyyy HH:mm:ss zzz". Для Unix-секунд используйте uts, для миллисекунд utms
  • Найти через регулярное выражение

    Изображение

    При выборе данной опции требуется заполнение параметров:

    • Регулярное выражение - шаблон поиска метки времени в логе, например \d{4}-\d{2}-\d{2}Т\d{2}:\d{2}:\d{2}Z

    • Формат времени - формат метки времени, например "dd.MM.yyyy HH:mm:ss zzz". Для Unix-секунд используйте uts, для миллисекунд utms

Примечание

В случае если "Постобработка" включена, то на постобработку отправляется Отправляется объект, в котором есть заголовки в виде объекта, параметры запроса в виде объекта и само тело запроса в виде строки + дополнительные поля пользователя.

Пример обработки лога:

  • Входящее событие

    {
    "level": "error",
    "timestamp": "2024-02-15T08:30:45Z",
    "numbers": [60, 20],
    "details": {
    "service": "auth",
    "error": "Permission denied"
    }
    }
  • Результат обработки

    {
    "headers.Accept": "*/*",
    "headers.Host": "monq.ru",
    "headers.User-Agent": "PostmanRuntime/7.44.1",
    "headers.Accept-Encoding": "gzip, deflate, br",
    "headers.Content-Type": "application/json",
    "headers.Content-Length": "142",
    "headers.X-Request-ID": "9ae2ddc43798e9369f6540ec46221db9",
    "headers.X-Real-IP": "192.168.1.1",
    "headers.X-Forwarded-For": "192.168.1.1",
    "headers.X-Forwarded-Host": "monq.ru",
    "headers.X-Forwarded-Port": "443",
    "headers.X-Forwarded-Proto": "https",
    "headers.X-Forwarded-Scheme": "https",
    "headers.X-Scheme": "https",
    "headers.Postman-Token": "***",
    "body.level": "error",
    "body.timestamp": "2024-02-15T08:30:45Z",
    "body.numbers[0]": "60",
    "body.numbers[1]": "20",
    "body.details.service": "auth",
    "body.details.error": "Permission denied"
    }

Обработчик Apache

Формат: Стандартный лог Apache (настройки по умолчанию)

Опции настройки метки времени: отсутствуют, временная метка будет записана та, которая указана внутри самого лога.

Пример обработки лога:

  • Входящее событие

    192.168.2.20 - - [29/Jul/2015:10:27:10 -0300] "GET /cgi-bin/try/ HTTP/1.0" 200 3395
  • Результат обработки

    {
    "remote_addr": "192.168.2.20",
    "remote_user": "-",
    "time_local": "29/Jul/2015:10:27:10 -0300",
    "request_method": "GET",
    "request_path": "/cgi-bin/try/",
    "request_protocol": "HTTP/1.0",
    "status": "200",
    "body_bytes_sent": "3395"
    }
Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Обработчик Docker

Формат: JSON

Опции настройки метки времени: отсутствуют, временная метка будет записана та, которая указана внутри самого лога.

Пример обработки лога:

  • Входящее событие

    {
    "log": "Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'.\n",
    "stream": "stderr",
    "time": "2025-07-23T19:00:00.000000000Z"
    }
  • Результат обработки

    {
    "log": "Merging configuration file '/etc/clickhouse-server/config.d/docker_related_config.xml'.\n",
    "stream": "stderr"
    }
Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Обработчик SyslogRfc5424

Формат: Соответствует RFC5424

Опции настройки метки времени: отсутствуют, временная метка будет записана та, которая указана внутри самого лога.

Пример обработки лога:

  • Входящее событие

    <34>1 2025-07-01T06:25:00.000Z myhost app - ID123 [meta] Server crashed
  • Результат обработки

    {
    "pri": "34",
    "version": "1",
    "time": "2025-07-01T06:25:00.000Z",
    "host": "myhost",
    "ident": "app",
    "pid": "-",
    "msgid": "ID123",
    "extradata": "[meta]",
    "message": "Server crashed"
    }
Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Обработчик SyslogRfc3164

Формат: Соответствует RFC3164

Опции настройки метки времени: отсутствуют, временная метка будет записана та, которая указана внутри самого лога с добавлением текущего года.

Пример обработки лога:

  • Входящее событие

    <30>Jul 1 06:25:00 hlfedora auditd[1787]: Disk full
  • Результат обработки

    {
    "pri": "30",
    "time": "2025-07-01T06:25:00.000Z",
    "host": "hlfedora",
    "ident": "auditd",
    "pid": "1787",
    "message": "Disk full"
    }
Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Обработчик PrometheusAlerts

Формат: Соответствует структуре уведомлений "Prometheus Alert Manager". Каждый элемент массива alerts обрабатывается как отдельная запись

Опции настройки метки времени: отсутствуют, временная метка будет записана по времени обработки события системой

Пример обработки лога:

  • Входящее событие

    {
    "receiver": "monitoring/alertmanager-s5/integration\\.web\\.hook",
    "status": "firing",
    "alerts": [
    {
    "status": "firing",
    "labels": { "alertname": "Test Alert1", "instance": "10.244.4.164:9091" },
    "annotations": { "description": "Collector test from QA1" },
    "startsAt": "2025-07-01T07:12:00.000Z"
    },
    {
    "status": "firing",
    "labels": { "alertname": "Test Alert2", "instance": "10.244.4.164:9091" },
    "annotations": { "description": "Collector test from QA2" },
    "startsAt": "2025-07-01T07:12:00.000Z"
    }
    ],
    "externalURL": "http://alertmanager.in.smon.monq.ru",
    "version": "4"
    }
  • Результат обработки

    • 1-й алерт:

      {
      "status": "firing",
      "labels.alertname": "Test Alert1",
      "labels.instance": "10.244.4.164:9091",
      "annotations.description": "Collector test from QA1",
      "startsAt": "2025-07-01T07:12:00.000Z",
      "receiver": "monitoring/alertmanager-s5/integration\\.web\\.hook",
      "externalURL": "http://alertmanager.in.smon.monq.ru",
      "version": "4"
      }
    • 2-й алерт:

      {
      "status": "firing",
      "labels.alertname": "Test Alert2",
      "labels.instance": "10.244.4.164:9091",
      "annotations.description": "Collector test from QA2",
      "startsAt": "2025-07-01T07:12:00.000Z",
      "receiver": "monitoring/alertmanager-s5/integration\\.web\\.hook",
      "externalURL": "http://alertmanager.in.smon.monq.ru",
      "version": "4"
      }
Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Обработчик Monq

Формат: Массив JSON, каждый объект которого будет иметь 3 поля:

  • timestamp - временная метка лога
  • body - сырой лог целиком в любом виде
  • source - готовые полезные поля лога после парсинга в формате ключ-значение (объект json без массивов и вложенностей).

Опции настройки метки времени: отсутствуют, временная метка будет записана та, которая указана внутри самого лога.

Пример обработки лога:

  • Входящее событие

    [
    {
    "timestamp": "2025-07-01 07:17:00.000000000",
    "body": "Unknown error occurred, module: A, level: error",
    "source": {
    "module": "A",
    "level": "error",
    "message": "Unknown error occurred"
    }
    },
    {
    "timestamp": "2025-07-01 07:17:00",
    "body": "User logged in successfully, module: A, level: info",
    "source": {
    "module": "A",
    "level": "info",
    "message": "User logged in successfully"
    }
    }
    ]
  • Результат обработки

    {
    "module": "A",
    "level": "error",
    "message": "Unknown error occurred"
    }
    ...
    {
    "module": "A",
    "level": "info",
    "message": "User logged in successfully"
    }
Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется ИСХОДНЫЙ лог до парсинга + дополнительные пользовательские поля (добавляются в json лога перед отправкой).

Обработчик Loki

Формат: Соответствует формату Loki (прием логов)

Примечания:

  • Из одного входящего события могут генерироваться несколько записей. В словарь переменных после парсинга идут только значения меток в объекте stream, время лога берется из наносекунд в values, в body записывается значение (например, log3 message), которое не парсится.

Опции настройки метки времени: отсутствуют, временная метка будет записана та, которая указана внутри самого лога.

Пример формата:

{
"streams": [
{
"stream": {
"label1": "value1",
"label2": "value2"
},
"values": [
[ "<unix время в наносекундах>", "<log1 message>" ],
[ "<unix время в наносекундах>", "<log2 message>" ]
]
},
{
"stream": {
"label1": "value3",
"label2": "value4"
},
"values": [
[ "<unix время в наносекундах>", "<log3 message>" ],
[ "<unix время в наносекундах>", "<log4 message>" ]
]
}
]
}

Пример обработки лога:

  • Входящее событие

    {
    "streams": [
    {
    "stream": {
    "label1": "value1",
    "label2": "value2"
    },
    "values": [
    [ "1751346900000000000", "<log1 message>" ],
    [ "1751346900000000000", "<log2 message>" ]
    ]
    },
    {
    "stream": {
    "label1": "value3",
    "label2": "value4"
    },
    "values": [
    [ "1751346900000000000", "<log3 message>" ],
    [ "1751346900000000000", "<log4 message>" ]
    ]
    }
    ]
    }
  • Результат обработки

    {
    "label1": "value1",
    "label2": "value2",
    "body": "<log1 message>"
    }
    ...
    {
    "label1": "value1",
    "label2": "value2",
    "body": "<log2 message>"
    }
    ...
    {
    "label1": "value3",
    "label2": "value4",
    "body": "<log3 message>"
    }
    ...
    {
    "label1": "value3",
    "label2": "value4",
    "body": "<log4 message>"
    }
Примечание

В случае если включена "Постобработка", то на пост-обработку отправляется лог в формате "ключ-значение" после парсинга + дополнительные пользовательские поля.

Обработчик Automaton

Формат: Поддерживает логи в форматах:

  • text/xml
  • text/plain
  • application/x-ndjson
  • application/json

Формат указывается в заголовке запроса: Content-Type.

Примечания:

  • Порядок работы парсера Automaton зависит от значения параметра запроса streamParserMode или заголовка запроса x-smon-stream-parser-mode
  • Может принимать значения full, body или может быть не указан
  • Парсер Automaton не имеет дополнительных полей на вкладке потока, в данном парсере дополнительные поля могут быть добавлены в сценарии-обработчике потока

Опции настройки метки времени: временная метка принимается в формате @timestamp, допустим формат указания времени YYYY-MM-DDTHH:MM:SS.Z

Пример обработки лога:

  • Исходный лог:
{
"level": "error",
"@timestamp": "2025-08-06T08:30:45Z",
"numbers": [60, 20],
"details": {
"service": "auth",
"error": "Permission denied"
}
}
  • Результат обработки:

    1. Если streamParserMode = body или значение не указано, то в поле source модели отправляемой события OnRawLogEvent будет записано записано тело события, которое было отправлено.

      {
      "source": "{\n \"level\": \"error\",\n \"@timestamp\": \"2025-08-06T08:30:45Z\",\n \"numbers\": [60, 20],\n \"details\": {\n \"service\": \"auth\",\n \"error\": \"Permission denied\"\n }\n}",
      "_sourceType": "application/json",
      "_rawId": "272a61d0-1503-4f37-8361-fbd8a29a7ad7",
      "_aggregatedAt": "2025-08-06T13:55:09.5512591+00:00",
      "_stream": {
      "id": 6368,
      "name": "Парсер Автоматон"
      },
      "_userspaceId": 1,
      "_labels": {
      "streamParserMode": "Body"
      }
      }
    2. Если streamParserMode = full то приходит сообщение, значение поля source которого имеет структуру, как в примере ниже.

      {
      "source": "{\"Headers\":{\"Accept\":\"*/*\",\"Host\":\"smon.monq.ru\",\"User-Agent\":\"PostmanRuntime/7.45.0\",\"Accept-Encoding\":\"gzip, deflate, br\",\"Content-Type\":\"application/json\",\"Content-Length\":\"161\",\"X-Request-ID\":\"3954ed313cd7d1cb57ae4ad39a39ec11\",\"X-Real-IP\":\"192.168.216.66\",\"X-Forwarded-For\":\"192.168.216.66\",\"X-Forwarded-Host\":\"smon.monq.ru\",\"X-Forwarded-Port\":\"443\",\"X-Forwarded-Proto\":\"https\",\"X-Forwarded-Scheme\":\"https\",\"X-Scheme\":\"https\",\"Postman-Token\":\"85f3c409-54df-4498-b611-e5c0a6453a77\"},\"QueryParams\":{},\"Body\":\"{\\n \\\"level\\\": \\\"error\\\",\\n \\\"@timestamp\\\": \\\"2025-08-06T08:30:45Z\\\",\\n \\\"numbers\\\": [60, 20],\\n \\\"details\\\": {\\n \\\"service\\\": \\\"auth\\\",\\n \\\"error\\\": \\\"Permission denied\\\"\\n }\\n}\"}",
      "_sourceType": "application/json",
      "_rawId": "5390f992-98eb-44b5-8eb9-e57dc7644731",
      "_aggregatedAt": "2025-08-06T14:01:06.0015755+00:00",
      "_stream": {
      "id": 6368,
      "name": "Парсер Автоматон"
      },
      "_userspaceId": 1,
      "_labels": {
      "streamParserMode": "Full"
      }
      }

Настройка непосредственно сценария обработки производится на визуальном low-code движке (руководство)

Внимание
  1. После внесения изменений в сценарии необходимо произвести его компиляцию соответствующей кнопкой в верхней панели меню.

  2. В случае если "Постробработка" включена, то на постобработку отправляется лог после парсинга автоматоном. Если NdJson или массив Json, то каждый элемент отправится отдельным сообщением с общими полями метаданных. Будет совпадать RawId, но различаться Id.

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

AddLabels

  • Библиотека: Automaton.Cl

  • Тип функции: Impure

  • Описание и назначение:

    Функция принимает на вход структуру OnProcessedLogEvent, и массив объектов, который будет добавлен к объекту _labels, входящему в состав структуры.

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

    • Inputs

      НазваниеТипОписаниеПараметры
      InExecПин вызова функцииСвязь
      ProcessedEventStruct:OnProcessedLogEventПринимает на вход структуру OnProcessedLogEventСвязь
      LabelsDynamic (array)Массив метокСвязь
    • Outputs

      НазваниеТипОписаниеПараметры
      OutExecПин вызова функцииСвязь
      ResultStruct:OnProcessedLogEventОбновленная модель события с добавленными метками.Связь

SendAutomatonEvent

  • Категория: Automaton.Core

  • Тип функции: Impure

  • Описание:

    Функция принимает событие и отправляет в очередь RabbitMQ по указанному пользователем ключу события.

    Необходима для маршрутизации событий по маршрутным узлам автоматона.

    • Inputs

      НазваниеТипОписаниеПараметры
      InExecПин вызова функцииСвязь
      ValueStruct: AnyПринимает событие, которое будет отправлено в указанную очередьСвязь
      EventNameStringСтрока для указания ключаСвязь/контрол
    • Outputs

      НазваниеТипОписаниеПараметры
      OkExecПоследовательность активна при успешной отправке событияСвязь
      FailedExecПоследовательность активна при ошибке отправки событияСвязь
      ErrorStringТекст ошибки (при наличии)Связь