Общие сведения
При работе приложения Dashboards TN логируются события сервисов приложения, а также события в приложении.
Для сбора, хранения и отправки логов служит сервис приложения Logstash.
Управление логированием
Логирование событий сервисов приложения можно конфигурировать отдельно для каждого сервиса, посредством следующих параметров.
- LOG_LVL – уровень логирования действий сервиса. Параметр принимает значения:
- 0 – Panic level
- 1 – Fatal level
- 2 – Error level
- 3 – Warning level
- 4 – Info level
- 5 – Debug level
- 6 – Trace level
По умолчанию используется значение «4».
- LOG_WITH_RESPONSE – логирование тела полученного ответа. Параметр доступен только для сервисов Manager и Dashboard. По умолчанию используется значение false.
Примечание |
---|
Логирование событий в приложении не конфигурируется. |
Сервис Logstash конфигурируется следующими параметрами.
- POLYMATICA_LOGSTASH_REPOSITORY_PATH – директория хранения файлов логов. По умолчанию используется значение
/usr/share/polymatica/platform/logstash/
. - POLYMATICA_LOGSTASH_PIPELINE_CONFIG_PATH – директория с файлом конфигурации сервиса в части сбора, хранения и отправки логов. По умолчанию используется значение
/etc/polymatica/platform/service/logstash/
.
Типы логируемых событий
Типы событий сервисов приложения
В логе событий сервисов приложения фиксируются следующие типы событий:
- outgoing request – исходящий запрос, который сервис в своей работе отправляет другому сервису;
- incoming request – входящий запрос, который сервис в своей работе принимает от другого сервиса.
Типы событий в приложении
В логе событий в приложении фиксируются следующие типы событий.
Раскрыть | ||
---|---|---|
| ||
|
Детализация логируемых событий
Детализация события сервисов приложения
Для событий сервисов приложения запись о событии содержит следующие поля.
- time – дата и время события;
- logLevel – уровень логирования;
- message – описание события, включающее в себя тип события, код статуса запроса StatusCode, используемый метод запроса Method и адрес метода Path;
- Datetime – метка времени события в формате Unix;
- instanceID – уникальный идентификатор сервиса приложения;
- serviceName – имя сервиса, однозначно определяющее его при поиске событий;
- serviceVersion – версия сервиса;
- traceId – идентификатор, который позволяет отследить события в разных сервисах в рамках одного входящего запроса.
Пример записи о событии сервиса приложения:
Блок кода | ||
---|---|---|
| ||
time="2023-10-19 06:14:08" logLevel=info message="outgoing request | StatusCode=200 | Method=PUT | URL=http://discovery:9610/api/v1/discovery/database-postgres | Duration=947.52µs" Datetime=1697696048237 instanceID=12 serviceName=database-postgres serviceVersion="1.5.0\n" traceId=04b4ec8e6b0253b857df7eb0fb7991fc |
Детализация события в приложении
Для событий в приложении запись о событии содержит следующие поля.
- Datetime – метка времени события в формате Unix;
- instanceID – уникальный идентификатор сервиса приложения;
- name – тип события;
- params – детали события;
- remote – адрес сервиса приложения;
- serviceName – имя сервиса, однозначно определяющее его при поиске событий;
- serviceVersion – версия сервиса;
- tag – тип лога события (всегда user_log – событие в приложении;
- tags – ключевые метки события;
- time – дата и время события;
- userID – уникальный идентификатор пользователя;
- userLogin – логин пользователя.
Пример записи о событии в приложения:
Блок кода | ||
---|---|---|
| ||
Datetime:1.697452592544e+12 instanceID:23 name:RoleEdit params:[map[Name:id Value:1] map[Name:name Value:Первый уровень]] remote:0.0.0.0:9600 serviceName:manager serviceVersion:1.12.0 tag:user_log tags:[Role Edit] time:2023-10-16 10:36:32.545802177 +0000 UTC m=+20833.309123274 userID:1 userLogin:admin |
Конфигурирование Logstash
Сервис конфигурируется файлом POLYMATICA_LOGSTASH_PIPELINE_CONFIG_PATH/pipeline-config.json.
Сохранение логов в файлы
Сохранение логов событий в файлы определяется в файле конфигурации, в массиве "outputs": [].
При установке используется конфигурация:
Блок кода | ||
---|---|---|
| ||
{ "name": "file", "tag": "user_log", "format": { "name": "ltsv" } }, { "name": "file", "tag": "system_log", "format": { "name": "ltsv" } } |
где tag – тип логов: system_log – лог событий сервисов приложения, user_log – лог событий в приложении.
По умолчанию логи событий сервисов приложения и событий в приложении сохраняются раздельно в файлы:
- POLYMATICA_LOGSTASH_REPOSITORY_PATH/system_log.log – для логов событий сервисов;
- POLYMATICA_LOGSTASH_REPOSITORY_PATH/user_log.log – для логов событий в приложении.
Сохранение логов в файлы управляется следующими параметрами.
- tag – тип сохраняемых логов;
file_name_from_field – параметр принимает название поля записи события. Когда указан, записи событий сохраняются в файлы соответственно значениям указанного поля.
Например, в логеuser_log
существует полеuserLogin
. Укажем это поле в значении параметра дляuser_log
:Блок кода language text { "name": "file", "tag": "user_log", "file_name_from_field": "userLogin", "format": { "name": "ltsv" } }
В результате такой конфигурации логи
user_log
станут сохраняться, вместо файла по умолчанию, раздельно в файлыuserLogin.log
, например, admin.log, user1.log и т. п..path – параметр переопределяет POLYMATICA_LOGSTASH_REPOSITORY_PATH. Это может быть полезным для разделения сохраненных файлов.
Например, настроим сохранение логовuser_log
в отдельные файлы и отдельную директорию, а также оставим записьuser_log
в файл по умолчанию:Блок кода language text { "name": "file", "tag": "user_log", "format": { "name": "ltsv" } }, { "path": "/usr/share/polymatica/platform/logstash/by_login", "name": "file", "tag": "user_log", "file_name_from_field": "userLogin", "format": { "name": "ltsv" } }
В результате такой конфигурации логи
user_log
станут сохраняться в файл по умолчанию и раздельно в файлыuserLogin.log
в директорию/usr/share/polymatica/platform/logstash/by_login
."format":{"name":} – параметр определяет формат сохранения логов и принимает значения ltsv и json.
Одна конфигурация сохранения в файл может использовать только один формат.
Правильно:Блок кода { "name": "file", "tag": "user_log", "format": { "name": "ltsv" } }, { "path": "/usr/share/polymatica/platform/logstash/json", "name": "file", "tag": "user_log", "format": { "name": "json" } }
Правильно:
Блок кода { "name": "file", "tag": "user_log", "format": { "name": "ltsv" } }, { "name": "file", "tag": "user_log", "file_name_from_field": "userLogin", "format": { "name": "json" } }
Неправильно, логи будут сохраняться некорректно:
Блок кода { "name": "file", "tag": "user_log", "format": { "name": "ltsv" } }, { "name": "file", "tag": "user_log", "format": { "name": "json" } }
Неправильно, будет использовано только значение json:
Блок кода { "name": "file", "tag": "user_log", "format": { "name": "ltsv", "name": "json" } }
Хранение и ротация файлов логов
Ротация сохраняемых файлов логов управляется следующими параметрами.
- max_size – размер файла в мегабайтах. По достижении заданного размера создается новый файл. По умолчанию используется значение «100».
- max_backups – максимальное количество сохраняемых при ротации предыдущих файлов. Когда значение параметра больше нуля, по достижении max_size создается файл {имя_файла}-{метка времени}.log. При превышении max_backups файл с самой ранней меткой удаляется. По умолчанию используется значение «3».
- max_age – время хранения сохраняемых при ротации предыдущих файлов в днях. Когда значение параметра больше нуля, и значение max_backups больше нуля, при превышении max_age меткой времени файла, файл удаляется. По умолчанию используется значение «28».
- compress – архивация сохраняемых при ротации предыдущих файлов. По умолчанию используется значение true.
Пример записи в файле конфигурации:
Блок кода | ||
---|---|---|
| ||
{ "name": "file", "tag": "user_log", "max_size": "100", "max_backups": "3", "max_age": "28", "compress": "true", "format": { "name": "ltsv" } } |
Сохранение логов в базу данных
Сохранение логов событий в БД определяется в файле конфигурации, в массиве "outputs": [].
При установке используется конфигурация для сохранения логов в базу данных, используемую по умолчанию для работы приложения:
Блок кода | ||
---|---|---|
| ||
{ "name": "postgresql", "tag": "user_log", "table": "logging", "columns": { "time": "create_date", "serviceName": "module_name", "name": "action", "remote": "remote", "userID": "user_id" }, "associations": { "params": { "type": "one2many", "table": "logging_param", "foreign_column": "logging_id", "columns": { "Name": "name", "Value": "value" } } } } |
где name – вид СУБД (в настоящее время поддерживается только postgresql);
tag – тип логов: system_log – лог событий сервисов приложения, user_log – лог событий в приложении;
table – таблица для записи лога;
columns – отображение (маппинг) полей записи события на колонки таблицы: название поля – название колонки;
associations – отображение (маппинг) полей массива params[] на колонки дополнительной таблицы для записи деталей события:
- type – тип связи между таблицами;
- table – таблица для записи;
- foreign_column – внешний ключ (колонка, по которой следует устанавливать связь);
- columns – отображение (маппинг) полей записи события на колонки таблицы: название поля – название колонки.
Сохранение логов в базы данных управляется следующими параметрами.
- name – вид СУБД (в настоящее время поддерживается только postgresql);
- connection – параметры соединения, когда не задан, используется БД по умолчанию:
- dsn – описание соединения с источником данных;
- max_opened_connections – максимальное количество параллельных соединений;
- max_idle_connections – максимальное количество неактивных соединений;
- tag – тип сохраняемых логов;
- table – таблица для записи лога (таблица должна существовать в указанной БД);
- columns – отображение (маппинг) полей записи события на колонки таблицы: название поля – название колонки (колонки должны существовать в указанной таблице);
- associations – отображение (маппинг) полей массива params[] на колонки дополнительной таблицы для записи деталей события (только для
user_log
).
Для примера, настроим сохранение лога system_log
во внешнюю базу данных:
Блок кода | ||
---|---|---|
| ||
{ "name": "postgresql", "connection": { "dsn": "postgres://логин:пароль@адрес:порт/название_базы_данных" }, "tag": "system_log", "table": "название_таблицы", "columns": { "time": "create_date", "serviceName": "module_name", "traceId": "trace_id", "logLevel": "log_level", "message": "message" } } |
Проверим, что лог записывается в базу данных.
Scroll Title | ||||
---|---|---|---|---|
| ||||
Отправка логов по HTTP и HTTPS
Настройка отправки логов
Вы можете настроить отправку логов с использованием POST-запросов. Запрос отправляется при каждой новой записи о событии. Отправка логов определяется в файле конфигурации, в массиве "outputs": [].
Чтобы настроить отправку логов по протоколу HTTP, добавьте в массив запись вида:
Блок кода |
---|
{ "name": "http", "tag": "файл_логов", "host": "хост", "port": "порт", "uri": "метод", "format": { "name": "json" } } |
Для настройки отправки по протоколу HTTPS, добавьте в массив запись вида:
Блок кода |
---|
{ "name": "http", "scheme": "https" "tag": "файл_логов", "host": "хост", "port": "порт", "uri": "метод", "format": { "name": "json" } } |
где tag – тип логов: system_log – лог событий сервисов приложения, user_log – лог событий в приложении;
host – IP-адрес или DNS-имя хоста сервиса;
port – номер порта;
uri – метод сервиса, который следует вызвать.
Пример записи:
Блок кода |
---|
"outputs": [ { "name": "http", "tag": "user_log", "host": "192.168.10.201", "port": "9180", "uri": "/castlemock/mock/rest/project/JYdd1Z/application/vPIsVb/user_log", "format": { "name": "json" } }, |
Примеры сообщений
Пример сообщения из лога действий сервисов:
Блок кода |
---|
{ "Datetime": "1696244685146", "instanceID": "21", "logLevel": "info", "message": " client request | Duration=718.758µs | Status=200 OK | RemoteAddr= | Method=PUT | URL=http://discovery:9610/api/v1/discovery/file-xlsx | ResponseBody= ", "serviceName": "file-xlsx", "serviceVersion": "\"1.3.0\\n\"", "tag": "system_log", "time": "2023-10-02T11:04:45.147694123Z", "traceId": "da9cd7d22c1ecb065d9532285e452645" } |
где Datetime – метка времени события в формате Unix;
instanceID – уникальный идентификатор экземпляра Сервиса;
logLevel – уровень логирования;
message – текст события;
serviceName – имя сервиса, однозначно определяющее его при поиске событий;
serviceVersion – версия сервиса;
tag – тип логов;
time – дата и время события в формате ISO 8601;
traceId – идентификатор, который позволяет отследить события в разных сервисах в рамках одного входящего запроса.
Пример сообщения из лога действий пользователей:
Блок кода |
---|
{ "Datetime": 1696245020187, "instanceID": "25", "name": "ProjectCreate", "params": [ { "Name": "id", "Value": "3" }, { "Name": "name", "Value": "Проект" } ], "remote": "0.0.0.0:9602", "serviceName": "dashboard", "serviceVersion": "1.11.0\n", "tag": "user_log", "tags": [ "Create", "Project" ], "time": "2023-10-02T11:10:20.188560062Z", "userID": 1, "userLogin": "admin" } |
где Datetime – метка времени события в формате Unix;
instanceID – уникальный идентификатор экземпляра Сервиса;
name – тип события;
params – детали события;
serviceName – имя сервиса, однозначно определяющее его при поиске событий;
serviceVersion – версия сервиса;
tag – тип логов;
tags – ключевые метки события;
time – дата и время события в формате ISO 8601;
userID – уникальный идентификатор пользователя;
userLogin – логин пользователя.
Получение файлов логов через интерфейс приложения
Вы можете скачать все хранящиеся в POLYMATICA_LOGSTASH_REPOSITORY_PATH файлы через интерфейс приложения, со страницы приложения /setting/logs. Для доступа к странице у вас должна быть роль суперпользователя или роль с доступом к логированию действий.
Чтобы скачать файлы, кликните на странице кнопку «Скачать логи». По клику формируется и автоматически скачивается архив с файлами. Формирование архива для скачивания может занять некоторое время.
Кнопка «Скачать логи» на странице приложения «Логи» модуля «Менеджер»
Подробнее о странице «Логи» см. UGMAN, страница «Руководство пользователя/Настройки/Логи».
Easy Heading Macro | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|