При работе приложения 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"
}
}
]
} |