Общие сведения
Интеграция с ЕЦП «ГосТех» в части журналирования и аудита предоставляет возможность отправлять логи сервису ЕЦП «ГосТех» через POST-запросы.
В этом разделе рассматривается использование ПО Fluent Bit для отправки логов Polymatica Analytics.
Подготовка
На хост-сервере Polymatica Analytics должно быть установлено ПО Fluent Bit.
Конфигурирование Fluent Bit
В примерах используется пакетная установка Fluent Bit.
Конфигурирование парсеров
Интеграция с ЕЦП «ГосТех» в части журналирования и аудита требует наличия следующих ключей в теле JSON.
- Ключи для лога системных событий:
Ключ | Тип значения | Назначение |
---|---|---|
date | long | Метка времени в формате Unix |
message | string | Текст события |
logLevel | string | Уровень логирования |
serviceName | string | Имя сервиса, однозначно определяющее его при поиске событий |
serviceVersion | string | Версия сервиса |
- Ключи для лога пользовательских событий:
Ключ | Тип значения | Назначение |
---|---|---|
date | long | Метка времени в формате Unix |
userLogin | string | Логин пользователя |
name | string | Наименование события аудита |
tags | string | Сквозные идентификаторы и метки, позволяющие группировать события |
message | string | Текст события |
logLevel | string | Уровень логирования |
serviceName | string | Имя сервиса, однозначно определяющее его при поиске событий |
serviceVersion | string | Версия сервиса |
Чтобы получать эти ключи из записей логов, их необходимо указать в виде именованных групп регулярного выражения в соответствующих парсерах 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 – метод сервиса, который следует вызвать.