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

Интеграция с ЕЦП «ГосТех» в части журналирования и аудита предоставляет возможность отправлять логи сервису ЕЦП «ГосТех» через POST-запросы.

В этом разделе рассматривается использование ПО Fluent Bit для отправки логов Polymatica Analytics.

Подготовка

На хост-сервере Polymatica Analytics должно быть установлено ПО Fluent Bit.

Конфигурирование Fluent Bit

В примерах используется пакетная установка Fluent Bit.

Конфигурирование парсеров

Интеграция с ЕЦП «ГосТех» в части журналирования и аудита требует наличия следующих ключей в теле JSON.

  • Ключи для лога системных событий:
КлючТип значенияНазначение
datelongМетка времени в формате Unix
messagestringТекст события
logLevelstringУровень логирования
serviceNamestringИмя сервиса, однозначно определяющее его при поиске событий
serviceVersionstringВерсия сервиса
  • Ключи для лога пользовательских событий:
КлючТип значенияНазначение
datelongМетка времени в формате Unix
userLoginstringЛогин пользователя
namestringНаименование события аудита
tagsstringСквозные идентификаторы и метки, позволяющие группировать события
messagestringТекст события
logLevelstringУровень логирования
serviceNamestringИмя сервиса, однозначно определяющее его при поиске событий
serviceVersionstringВерсия сервиса

Чтобы получать эти ключи из записей логов, их необходимо указать в виде именованных групп регулярного выражения в соответствующих парсерах Fluent Bit, обрабатывающих записи логов.

Откройте файл конфигурации парсеров /etc/fluent-bit/parsers.conf и добавьте в него следующие парсеры.

  • Парсер для системного лога:
Пример
[PARSER]
    Name analytics_system_parser
    Format regex
    Regex ^\[(?<time>[^\]]*)\]\[(?<serviceVersion>[^\]]*)\]\[(?<logLevel>[^\]]*)\] (?<message>[^$]*)
    Time_Key time
    Time_Format %Y-%m-%d %H:%M:%S.%L

Чтобы парсер корректно обрабатывал запись, формат записи лога должен соответствовать формату, ожидаемому парсером в регулярном выражении. Для указанного в примере регулярного выражения задайте в параметре plm.log.main.custom_file_formatting формат [%Y-%m-%d %H:%M:%S.%e][%*-%<-%>][%l] %v:

Пример
plm.log.main.custom_file_formatting = [%Y-%m-%d %H:%M:%S.%e][%*-%<-%>][%l] %v

Пояснение

Ключ serviceName дописывается в тело JSON через конфигурацию приложения в fluent-bit.conf (см. Конфигурирование приложения).


  • Парсер для пользовательского лога:
Пример
[PARSER]
    Name analytics_user_parser
    Format regex
    Regex '(?<time>[^']*)'; '(?<serviceVersion>[^']*)'; '(?<userLogin>[^']*)'; '(?<name>[^']*)'; '(?<object>[^']*)'; '(?<objectName>[^']*)'; '(?<objectId>[^']*)'; '(?<error>[^']*)'
    Time_Key time
    Time_Format %Y-%m-%d %H:%M:%S

Чтобы парсер корректно обрабатывал запись, формат записи лога должен соответствовать формату, ожидаемому парсером в регулярном выражении. Для указанного в примере регулярного выражения задайте в параметре plm.log.user_actions.custom_file_formatting формат '%Y-%m-%d %H:%M:%S'; '%*-%<-%>'; %v:

Пример
plm.log.user_actions.custom_file_formatting = '%Y-%m-%d %H:%M:%S'; '%*-%<-%>'; %v

Пояснение

Ключи serviceName и tags дописываются в тело JSON через конфигурацию приложения в fluent-bit.conf (см. Конфигурирование приложения).

Конфигурирование приложения

Чтобы логи Polymatica Analytics обрабатывались и отправлялись через POST-запросы, необходимо добавить правила их обработки в конфигурацию приложения Fluent Bit.

Откройте файл конфигурации приложения fluent-bit.conf и добавьте в него следующие правила обработки.

  • Правила обработки для системного лога.
Пример
[INPUT]
    name tail
    tag analytics_system
    path /var/plmrepo/logs/main/main*
    parser analytics_system_parser

[FILTER]
    name record_modifier
    match analytics_system
    record serviceName polymatica_analytics

[OUTPUT]
    name http
    match analytics_system
    host хост
    port порт
    uri метод
    format json
    json_date_format epoch

где  host – IP-адрес или DNS-имя хоста сервиса;

       port – номер порта сервиса;

       uri – метод сервиса, который следует вызвать.

  • Правила обработки для пользовательского лога.
Пример
[INPUT]
    name tail
    tag analytics_user
    path /var/plmrepo/logs/user_actions/user_actions
    parser analytics_user_parser

[FILTER]
    name record_modifier
    match analytics_user
    record serviceName polymatica_analytics

[FILTER]
    name modify
    match analytics_user
    copy name tags

[OUTPUT]
    name http
    match analytics_user
    host хост
    port порт
    uri метод
    format json
    json_date_format epoch

где  host – IP-адрес или DNS-имя хоста сервиса;

       port – номер порта сервиса;

       uri – метод сервиса, который следует вызвать.

  • Нет меток