Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

Версия 1 Текущий »

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


При работе приложения 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/pipeline-config.json.

Типы логируемых событий


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

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

  • 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. GroupRightEdit - Изменение прав группы
  24. LayerCreate – Создание слоя
  25. LayerDelete – Удаление слоя
  26. LayerEdit – Изменение настроек слоя
  27. Login – Авторизация пользователя
  28. Logout – Выход пользователя из системы
  29. ProjectCreate – Создание проекта
  30. ProjectDelete – Удаление проекта
  31. ProjectEdit – Изменение настроек проекта
  32. ProjectViewed – Просмотр проекта
  33. RoleCreate – Создание роли
  34. RoleDelete – Удаление роли
  35. RoleEdit – Изменение настроек роли.
  36. ScheduleCreate – Создание расписания автообновления данных датасета
  37. ScheduleDelete – Удаление расписания автообновления данных датасета
  38. ScheduleEdit – Изменение настроек расписания автообновления данных датасета
  39. ShareCreate - Создание ссылки с общим доступом
  40. ShareEdit - Изменение ссылки с общим доступом
  41. ShareDelete - Удаление ссылки с общим доступом
  42. SVGCreate – Создание объекта SVG
  43. SVGDelete – Удаление объекта SVG
  44. SVGEdit – Изменение настроек объекта SVG
  45. ThemeCreate – Создание темы оформления
  46. ThemeDelete –  Удаление темы оформления
  47. ThemeEdit – Изменение настроек темы оформления
  48. UserCreate – Создание пользователя
  49. UserDelete – Удаление пользователя
  50. UserEdit – Изменение настроек пользователя
  51. UserRightEdit - Изменение прав пользователя
  52. WidgetCreate – Создание виджета.
  53. WidgetDelete – Удаление виджета.
  54. WidgetEdit – Изменение настроек виджета

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


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

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

  • 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

Конфигурирование сервиса в части сбора, хранения и отправки логов


Сбор, хранение и отправка логов конфигурируются в файле, заданном в переменной POLYMATICA_LOGSTASH_PIPELINE_CONFIG_PATH.

Сохранение логов в файлы

Сохранение логов событий в файлы определяется в файле конфигурации, в массиве "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:

    {
      "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 в файл по умолчанию:

    {
      "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"
  }
}


Отправка логов по 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. Для доступа к странице у вас должна быть роль суперпользователя или роль с доступом к логированию действий.

Чтобы скачать файлы, кликните на странице кнопку «Скачать логи». По клику формируется и автоматически скачивается архив с файлами. Формирование архива для скачивания может занять некоторое время.

Раздел "Логи". Кнопка загрузки логов



Подробнее о странице «Логи» см. Руководство пользователя модуля Manager, страница «Руководство пользователя/Настройки/Логи».

  • Нет меток