Общие сведения


При работе приложения 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 – входящий запрос, который сервис в своей работе принимает от другого сервиса.

Типы событий в приложении

В логе событий в приложении фиксируются следующие типы событий.

  1. ChangePassword – пароль изменен.
  2. ComponentCreate – компонент создан.
  3. ComponentDelete – компонент удалён
  4. ComponentEdit – настройки компонента изменены.
  5. DatasetCreate – датасет создан.
  6. DatasetDelete – датасет удалён.
  7. DatasetEdit – настройки датасета изменены.
  8. DatasetUpdateData – данные датасета обновлены.
  9. DatasourceCreate – источник создан.
  10. DatasourceDelete – источник удалён.
  11. DatasourceEdit – настройки источника изменены.
  12. FilterCreate – фильтр создан.
  13. FilterDelete – фильтр удалён.
  14. FilterUpdate – настройки фильтра изменены.
  15. GlobalThemeCreate – глобальная тема создана.
  16. GlobalThemeDelete – глобальная тема удалена.
  17. GlobalThemeReset – глобальная тема сброшена.
  18. GlobalThemeSelect – глобальная тема применена.
  19. GlobalThemeUpdate – глобальная тема обнолвена.
  20. GroupCreate – группа создана.
  21. GroupDelete – группа удалена.
  22. GroupEdit – настройки группы изменены.
  23. LayerCreate – слой создан.
  24. LayerDelete – слой удалён.
  25. LayerEdit – настройки слоя изменены.
  26. Login – пользователь авторизовался.
  27. Logout – пользователь вышел.
  28. ProjectCreate – проект создан.
  29. ProjectDelete – проект удалён.
  30. ProjectEdit – настройки проекта изменены
  31. RoleCreate – роль создана.
  32. RoleDelete – роль удалена.
  33. RoleEdit – настройки роли изменены.
  34. ScheduleCreate – расписание автообновления данных датасета создано.
  35. ScheduleDelete – расписание автообновления данных датасета удалено.
  36. ScheduleEdit – настройки расписания автообновления данных датасета изменены.
  37. SVGCreate – объект SVG создан.
  38. SVGDelete – объект SVG удалён.
  39. SVGEdit – настройки объекта SVG изменены.
  40. ThemeCreate – тема оформления создана.
  41. ThemeDelete –  тема оформления удалена.
  42. ThemeEdit – настройки темы оформления изменены.
  43. UserCreate – пользователь создан.
  44. UserDelete – пользователь удалён.
  45. UserEdit – настройки пользователя изменены.
  46. WidgetCreate – виджет создан.
  47. WidgetDelete – виджет удалён.
  48. WidgetEdit – настройки виджета изменены

Детализация логируемых событий


Детализация события сервисов приложения

Для событий сервисов приложения запись о событии содержит следующие детали.

  • 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, страница «Руководство пользователя/Настройки/Логи».

  • Нет меток