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

Обработчики

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

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

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

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

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

Практически для всех видов обработчиков доступно обогащение входных данных дополнительными полями. Исключением является обработчик 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Текст ошибки (при наличии)Связь