Общие сведения
При работе приложения 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_REPOSITORY_PATH/system_log.log – для логов событий сервисов;
- POLYMATICA_LOGSTASH_REPOSITORY_PATH/user_log.log – для логов событий в приложении.
- POLYMATICA_LOGSTASH_PIPELINE_CONFIG_PATH – директория с файлом конфигурации сервиса в части сбора, хранения и отправки логов. По умолчанию используется значение
/etc/polymatica/platform/service/logstash/
.
Типы логируемых событий
Типы событий сервисов приложения
В логе событий сервисов приложения фиксируются следующие типы событий:
- outgoing request – исходящий запрос, который сервис в своей работе отправляет другому сервису;
- incoming request – входящий запрос, который сервис в своей работе принимает от другого сервиса.
Типы событий в приложении
В логе событий в приложении фиксируются следующие типы событий.
Детализация логируемых событий
Детализация события сервисов приложения
Для событий сервисов приложения запись о событии содержит следующие детали.
- time – дата и время события в формате ISO 8601;
- 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 – дата и время события в формате ISO 8601;
- 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
Сбор логов
В файле конфигурации Logstash задается сохранение логов событий в файлы, которые находятся в POLYMATICA_LOGSTASH_REPOSITORY_PATH:
{ "name": "file", "tag": "user_log", "format": { "name": "ltsv" } }, { "name": "file", "tag": "system_log", "format": { "name": "ltsv" } }
где tag – тип логов: system_log – логи событий сервисов приложения, user_log – логи событий в приложении.
Хранение и ротация файлов логов
Чтобы настроить ротацию, необходимо задать параметры ротации в файле POLYMATICA_LOGSTASH_PIPELINE_CONFIG_PATH/pipeline-config.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" } }
Отправка логов по HTTP и HTTPS
Настройка отправки логов
Вы можете настроить автоматическую отправку логов с использованием POST-запросов. Запрос отправляется при каждой новой записи о событии.
Чтобы настроить автоматическую отправку, необходимо задать параметры отправки запросов в файле конфигурации POLYMATICA_LOGSTASH_PIPELINE_CONFIG_PATH/pipeline-config.json.
Для настройки отправки по протоколу HTTP, добавьте в массив "outputs" запись вида:
{ "name": "http", "tag": "файл_логов", "host": "хост", "port": "порт", "uri": "метод", "format": { "name": "json" } }
Для настройки отправки по протоколу HTTPS, добавьте в массив "outputs" запись вида:
{ "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. Для доступа к странице у вас должна быть роль суперпользователя или роль с доступом к логированию действий.
Чтобы скачать файлы, кликните на странице кнопку «Скачать логи». По клику формируется и автоматически скачивается архив с файлами. Формирование архива для скачивания может занять некоторое время.
Кнопка «Скачать логи» на странице приложения «Логи» модуля «Менеджер»
Подробнее о странице «Логи» см. Руководство пользователя модуля Manager, страница «Руководство пользователя/Настройки/Логи».