При работе приложения Dashboards TN логируются события сервисов приложения, события коннекторов приложения, а также действия пользователей в приложении.
Для сбора, хранения и отправки логов служит сервис приложения Logstash.
Логи приложения хранятся в директории, указанной в параметре POLYMATICA_LOGSTASH_REPOSITORY_PATH (для Docker-установки) либо "repository": { "path": "<path>"} (для пакетной установки). В директории хранятся следующие файлы:
manager.log или database-mssql.log);user_log.log).Вы можете скачать все хранящиеся в директории логов файлы через интерфейс приложения со страницы приложения /setting/logs (раздел "Логи"). Для доступа к странице у вас должна быть роль администратора, суперпользователя или роль с доступом к логам системы.
Чтобы скачать файлы, кликните на странице кнопку «Выгрузить» и выберите в меню «Логи». По клику формируется и автоматически скачивается архив с файлами. Формирование архива для скачивания может занять некоторое время.
  | 
Ссылка на архив с файлами логов приходит в уведомления системы, по ней можно выгрузить архив локально.
Структура файлов архива логов полностью повторяет структуру директории хранения логов, за исключением того, что файл логов действий пользователя называется filtered_user.log, так как при скачивании лога из интерфейса к нему применяются фильтры (поиск или фильтрация по колонкам).
//Логи сервисов приложения data-transformer.log discovery.log file-storage.log gateway.log logstash.log manager.log notifications.log renderer.log //Логи коннекторов к БД database-clickhouse.log database-mssql.log database-mysql.log database-oracle.log database-postgres.log database-vertica.log database-ydb.log //Логи коннекторов к файловым источникам file-csv.log file-json.log file-xlsx.log file-xml.log //Логи коннектора к источнику Polymatica Analytics polymatica-analytics.log //Логи коннектора к источнику Р7-Office r7-office.log //Лог действий пользователей в приложении filtered_user.log  | 
В логах событий сервисов приложения фиксируются следующие типы событий:
Для коннекторов к источникам приложения фиксируются следующие типы событий:
В логе действий пользователя фиксируются следующие типы событий:
  | 
Для событий сервисов приложения запись о событии содержит следующие поля.
Пример записи о событии сервиса приложения:
Datetime:1.747979320318e+12 clientIP:192.168.10.100 instanceID:24 name:DatasetCreate params:[map[name:id value:882810] map[name:name value:Население РФ с HEX] map[name:type value:local]] remote:0.0.0.0:9600 serviceName:manager serviceVersion:2.9.2 sessionID:1.204814e+06 tag:user_log tags:[Dataset Create] time:2025-05-23 05:48:40.320716421 +0000 UTC m=+159343.232890933 userID:224997 userLogin:user8  | 
Datetime:1747979320319 instanceID:6 logLevel:info message:client request | Duration=718.928µs | Status=200 OK | Method=GET | URL=http://service-storage:9608/api/module/v1/storage/a4089ab7-9ab1-4419-b2c5-c7ff9151fa1c/8e4bf89c-7974-4d38-bea2-5171672f2abb.xlsx?zip=false serviceName:file-xlsx serviceVersion:2.8.1 tag:system_log time:2025-05-23 05:48:40.321223283 +0000 UTC m=+159343.233397782 traceId:0312e2aa2dcfbf243fbc58c709414602  | 
Детализация действий пользователя по-разному происходит в интерфейсе приложения, в общем user_log.log в директории /logstash и в filtered-user.log, выгруженном из интерфейса.
Одно и то же событие будет выглядеть:
  | 
user_log.log:Datetime:1.747979320318e+12 clientIP:192.168.10.100 instanceID:24 name:DatasetCreate params:[map[name:id value:882810] map[name:name value:Население РФ с HEX] map[name:type value:local]] remote:0.0.0.0:9600 serviceName:manager serviceVersion:2.9.2 sessionID:1.204814e+06 tag:user_log tags:[Dataset Create] time:2025-05-23 05:48:40.320716421 +0000 UTC m=+159343.232890933 userID:224997 userLogin:user8  | 
filtered-user.log:action:DatasetCreate client_ip: create_date:2025-05-23T05:48:40.320716Z id:9.447515e+06 params:<nil> remote:0.0.0.0:9600 section:dataset section_translation: session_id: user_id:224997  | 
Обратите внимание, что: 
  | 
По умолчанию сбор, хранение и отправка логов конфигурируются в файле конфигурации приложения.
При необходимости можно произвести детальную конфигурацию в файле/etc/polymatica/platform/service/logstash/pipeline-config.json.
Общий формат файла конфигурации логирования:
{
  "inputs": [
    ...
  ],
  "parsers": [
    ...
  ],
  "outputs": [
    ...
  ]
} | 
Лог-сообщение попадает в сервис logstash через input, парсится в пары ключ-значение через parser, затем к полученным парам ключ-значение применяются соответствующие outputs.
Проходя через input, лог-сообщение получает тэг, который задается в параметрах массива input. Тэг определяет, какую последовательность parsers и outputs пройдет лог-сообщение. Каждое лог-сообщение должно иметь тэг.
В массиве outputs указываются форматтеры, которые будут обрабатывать файл сообщения для вывода, и места вывода логов.
Для логов Polymatica Dashboards TN доступен только один input - rabbitmq.
Для настройки rabbitmq в файле pipeline-config можно задать следующие параметры в формате JSON:
  | 
Для логов Polymatica Dashboards TN доступно три парсера:
  | 
regex. Данный парсер обрабатывает сообщения в формате, заданном регулярным выражением и принимает один параметр "format", в котором содержится регулярное выражение.
Для логов Polymatica Dashboards TN доступно четыре способа вывода логов. Перед выводом в лог сообщения могут быть обработаны одним из двух форматтеров: json или ltsv. Параметры форматтеров идентичны параметрам парсеров.
Четыре outputs для логов:
  | 
  | 
  | 
{
// Откуда поступает сообщение
   "inputs": [ 
    {
      "name": "rabbitmq", // Сообщение поступает из ПО RabbitMQ
      "tag": "user_log", // Сообщению присваивается тэг user_log
 
// Сообщение передается сервису logstash для записи в лог действий пользователя 
       "queue": {
         "name": "logstash.service.users" 
      },
      "exchange": {
        "name": "logstash"
      },
      "routing_key": "logstash.*.users"
    },
   
    {
      "name": "rabbitmq", // Сообщение поступает из ПО RabbitMQ
      "tag": "system_log", // Сообщению присваивается тэг system_log       
 //Сообщение передается сервису logstash для записи в лог действий сервисов/коннекторов
 	"queue": {
        "name": "logstash.service.system"
      },
      "exchange": {
        "name": "logstash"
      },
      "routing_key": "logstash.*.system"
    }
  ],
 // Чем обрабатывается сообщение 
   "parsers": [      
	// Сообщение с тэгом system_log обрабатывается регулярным выражением, приведенным в поле "format" 
	{
      "name": "regex",
      "tag": "system_log",
      "format": "time=\"$_\" logLevel=$logLevel message=\"$message\" Datetime=$Datetime instanceID=$instanceID serviceName=$serviceName serviceVersion=$serviceVersion traceId=$traceId"
    },     
	
    // Сообщение с тэгом user_log обрабатывается парсером JSON
	{
      "name": "json",
       "tag": "user_log"
    }
  ],
// Куда и в каком виде выводится сообщение
  "outputs": [
    {
      "name": "stdout",
      "tag": "system_log",
      "format": {
        "name": "ltsv",
        "pairs_delimiter": ":",
        "value_delimiter": "\t" // Сообщения с тэгом system_log будут выводиться в стандартный вывод Linux после обработки форматтером ltsv. Пары ключ-значение разделяются ":", отделяются друг от друга табуляцией. 
      }
    },
    {
      "name": "file",
      "tag": "user_log",
      "format": {
        "name": "ltsv" // Сообщение с тэгом user_log будет выводиться в файл после обработки форматтером ltsv.       
    }
    },
    {
      "name": "file",
      "tag": "system_log",
      "file_name_from_field": "serviceName",  // Cообщения с тэгом system_log также будут выводиться в файл, для чего форматтер ltsv будет брать имя сервиса из поля serviceName.         
       "format": {
        "name": "ltsv"
      }
    },
    {
      "name": "postgresql", // Сообщения с тэгом user_log также будут записаны в таблицу PostgreSQL с нижеуказанными колонками.
      "tag": "user_log",
      "table": "logging",
      "columns": {
        "time": "create_date",
        "name": "action",
        "remote": "remote",
        "userID": "user_id",
        "params": "params",
        "clientIP": "client_ip",
        "sessionID": "session_id"
      }
    }
  ]
} |