При работе приложения 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
Типы логируемых событий
Типы событий сервисов приложения
В логах событий сервисов приложения фиксируются следующие типы событий:
исходящие запросы, который сервис в своей работе отправляет другому сервису (outgoing request);
входящие запросы, который сервис в своей работе принимает от другого сервиса (incoming request).
Типы событий коннекторов
Для коннекторов к источникам приложения фиксируются следующие типы событий:
запрос данных через коннектор (client-request);
запрос от БД на передачу данных в приложение (incoming request).
Типы действий пользователя в приложении
В логе действий пользователя фиксируются следующие типы событий:
ChangePassword – Изменение пароля
CommentCreate – Создание комментария
CommentEdit – Редактирование комментария
CommentDelete – Удаление комментария
ComponentCreate – Создание компонента
ComponentDelete – Удаление компонента
ComponentEdit – Изменение настроек компонента
DatasetCreate – Создание датасета
DatasetDelete – Удаление датасета
DatasetEdit – Изменение настроек датасета
DatasetUpdateData – Обновление данных датасета
DatasourceCreate – Создание источника
DatasourceDelete – Удаление источника
DatasourceEdit – Изменение настроек источника
DiagnosticsGet – Выгрузка диагностической информации о системе
FilterCreate – Создание фильтра
FilterDelete – Удаление фильтра
FilterUpdate – Изменение настроек фильтра
GlobalThemeCreate – Создание глобальной темы
GlobalThemeDelete – Удаление глобальной темы
GlobalThemeReset – Сброс глобальной темы
GlobalThemeSelect – Применение глобальной темы
GlobalThemeUpdate – Обновление глобальной темы
GroupCreate – Создание группы
GroupDelete – Удаление группы
GroupEdit – Изменение настроек группы
GroupRightEdit - Изменение прав группы
LayerCreate – Создание слоя
LayerDelete – Удаление слоя
LayerEdit – Изменение настроек слоя
Login – Авторизация пользователя
Logout – Выход пользователя из системы
ProjectCreate – Создание проекта
ProjectDelete – Удаление проекта
ProjectEdit – Изменение настроек проекта
ProjectViewed – Просмотр проекта
RoleCreate – Создание роли
RoleDelete – Удаление роли
RoleEdit – Изменение настроек роли
ScheduleCreate – Создание расписания автообновления данных датасета
ScheduleDelete – Удаление расписания автообновления данных датасета
ScheduleEdit – Изменение настроек расписания автообновления данных датасета
ShareCreate - Создание ссылки с общим доступом
ShareEdit - Изменение ссылки с общим доступом
ShareDelete - Удаление ссылки с общим доступом
SVGCreate – Создание объекта SVG
SVGDelete – Удаление объекта SVG
SVGEdit – Изменение настроек объекта SVG
ThemeCreate – Создание темы оформления
ThemeDelete – Удаление темы оформления
ThemeEdit – Изменение настроек темы оформления
UserCreate – Создание пользователя
UserDelete – Удаление пользователя
UserEdit – Изменение настроек пользователя
UserRightEdit - Изменение прав пользователя
WidgetCreate – Создание виджета.
WidgetDelete – Удаление виджета.
WidgetEdit – Изменение настроек виджета
Детализация логируемых событий
Детализация события сервиса приложения
Для событий сервисов приложения запись о событии содержит следующие поля.
Datetime– метка времени события в формате Unix;
clientIP – IP-адрес, с которого пользователь подключился к системе;
message– описание события, включающее в себя тип события, продолжительность выполнения запроса, код статуса запросаStatusCode, используемый метод запросаMethod, адрес метода URL и тело ответа ResponseBody, если его запись в лог настроена при конфигурации сервиса Logstash;
serviceName – имя коннектора, однозначно определяющее его при поиске событий;
serviceVersion– версия коннектора;
tag – тэг лог-файла;
time – дата и время события;
traceId – идентификатор, который позволяет отследить события в разных сервисах в рамках одного входящего запроса.
Пример записи в логе коннектораРазвернуть исходный код
Детализация действий пользователя по-разному происходит в интерфейсе приложения, в общем user_log.log в директории /logstash и в filtered-user.log, выгруженном из интерфейса.
Одно и то же событие будет выглядеть:
В разделе "Логи" приложения:
Детализация действий пользователя в интерфейсе. При наведении на столбец "Сообщение" отображается детализированное тело сообщения в формате JSON
В общем user_log.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:
Детализация действия пользователя в filtered-user.logРазвернуть исходный код
данные для отображения лога в интерфейсе берутся из общего user_log.log;
пустые поля в filtered-user.log зависят от установленного уровня логирования сервиса manager (см. Параметры конфигурации, параметр LOG_LVL), в качестве примера приведен вариант по умолчанию.
Конфигурирование сервиса в части сбора, хранения и отправки логов
Лог-сообщение попадает в сервис logstash через input, парсится в пары ключ-значение через parser, затем к полученным парам ключ-значение применяются соответствующие outputs.
Проходя через input, лог-сообщение получает тэг, который задается в параметрах массива input. Тэг определяет, какую последовательность parsers и outputs пройдет лог-сообщение. Каждое лог-сообщение должно иметь тэг.
В массиве outputs указываются форматтеры, которые будут обрабатывать файл сообщения для вывода, и места вывода логов.
Inputs
Для логов Polymatica Dashboards TN доступен только один input - rabbitmq.
Для настройки rabbitmq в файле pipeline-config можно задать следующие параметры в формате JSON:
Название
Значение по умолчанию
Тип данных
Описание
host
*
string
IP хоста, на котором развернуто ПО RabbitMQ
port
*
string
Порт подключения к серверу RabbitMQ
user
*
string
Имя пользователя RabbitMQ
password
*
string
Пароль пользователя RabbitMQ
vhost
*
string
Пространство имен, в котором будут объявляться точка обмена сообщениями и очередь лог-сообщений.
routing_key
!
string
Ключ, по которому связываются точка обмена сообщениями и очередь лог-сообщений.
Если true, то объявленная точка обмена переживет перезагрузку сервера.
exchange.kind
"topic"
bool
Тип объявляемой точки обмена.
exchange.internal
false
bool
Если true, то к такой точке обмена нельзя привязать приложения, которые публикуют сообщения.
exchange.no_wait
false
bool
Если true, то не ждать от сервера подтверждения об объявлении точки обмена.
qos.prefetch_count
500
int
Максимальное количество сообщений, которое будет передано потребителям до получения подтверждений.
qos.prefetch_size
0
int
Максимальное количество байт, которое сервер доставит потребителям до получения подтверждений.
Parsers
Для логов Polymatica Dashboards TN доступно три парсера:
json. Данный парсер обрабатывает лог-сообщения в формате json. Парсер не принимает никаких параметров.
ltsv. Данный парсер обрабатывает сообщения в формате "ключ-значение" и принимает следующие параметры:
Название
Значение по умолчанию
Тип данных
Описание
pairs_delimiter
":"
string
Разделитель для элементов пары "ключ-значение" во входящем сообщении.
value_delimiter
"\t"
string
Разделитель пар "ключ-значение" во входящем сообщении.
types
null
json
Структура, которая определяет тип значения в структуре лога по ключу. Значение структуры может быть "integer", "float" или "bool".
regex. Данный парсер обрабатывает сообщения в формате, заданном регулярным выражением и принимает один параметр "format", в котором содержится регулярное выражение.
Outputs
Для логов Polymatica Dashboards TN доступно четыре способа вывода логов. Перед выводом в лог сообщения могут быть обработаны одним из двух форматтеров: json или ltsv. Параметры форматтеров идентичны параметрам парсеров.
Четыре outputs для логов:
file - сохранение логов в файл. Для сохранения в файл необходимо указать следующие параметры:
Название
Значение по умолчанию
Тип данных
Описание
path
*
string
Путь к директории, где будет сохраняться файл. Если оставить пустым, будет браться значение по умолчанию /usr/share/polymatica/platform/logstash/.
max_size
100
int
Максимальный размер лог-файла МБ перед ротацией логов.
max_backups
3
int
Максимальное количество хранимых файлов с логами. При превышении порога, самый ранний файл будет удален.
max_age
28
int
Срок хранения файлов логов.
compress
true
bool
Если true, файл логов будет сжат.
file_name_from_field
""
string
Поле, по значению которого выбирается файл для записи логов.
http - отправка логов по HTTP/HTTPS. Для настройки отправки необходимо указать следующие параметры:
Название
Значение по умолчанию
Тип данных
Описание
scheme
"http"
string
http/https
host
!
string
IP хоста, куда отправляются логи.
port
-
string
Порт сервера для приема логов.
URI
-
string
URL-адрес сервера для отправки логов.
method
"post"
string
Метод, в теле которого будут отправляться логи.
stdout - вывод логов в стандартный вывод Linux.
postgres - запись логов в базу данных PostgreSQL с указанными колонками.
Название
Значение по умолчанию
Тип данных
Описание
table
!
string
Название таблицы, в которой будет сохранен лог.
columns
!
json
Json-структура, проецирующая ключ лог-сообщения в название колонки.
connection.dsn
*
string
Параметры DSN для подключения к БД.
connection.max_opened_connections
*
int
Максимальное количество открытых соединений.
connection.max_idle_connections
*
int
Максимальное количество неактивных соединений.
associations
null
json
Json-структура, которая позволяет сохранить значение лога, имеющее формат списка объектов, в отдельную таблицу и создать связь между родительским и дочерним логом.
Пример настройки логирования
Разбор полной конфигурации файла pipeline-configРазвернуть исходный код
{
// Откуда поступает сообщение
"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"
}
}
]
}