Общие сведения
Интеграция с ЕЦП «ГосТех» в части журналирования и аудита предоставляет возможность отправлять логи сервису ЕЦП «ГосТех» через 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 – метод сервиса, который следует вызвать.