Логирование

Настройка

Дополните все контейнеры Gramax Enterprise Server, кроме контейнеров doc-portal и web-editor:

  • LOG_TYPE — формат логов (default | cef). По умолчанию default.

  • LOG_LEVEL — минимальный уровень записи (debug | info | warn | error | fatal). По умолчанию info.

  • LOG_TRANSPORTER — транспорт вывода (console | syslog). По умолчанию console.

Дополнительные параметры для LOG_TRANSPORTER=syslog

  • LOG_SYSLOG_HOST — хост Syslog‑сервера. По умолчанию 127.0.0.1.

  • LOG_SYSLOG_PORT — порт. По умолчанию 514.

  • LOG_SYSLOG_PROTOCOL — протокол ( udp4 | tcp4 | tls4 | udp6 | tcp6 | tls6 ). По умолчанию udp4.

  • LOG_SYSLOG_APP_NAME — имя приложения в сообщении (по умолчанию gramax).

Структура CEF-логов

Логи содержат структурированную информацию о событиях, включая уникальный идентификатор, описание сообщения, уровень важности (severity) и расширения с дополнительными данными, полученными из контекста события.

Каждый лог состоит из двух основных частей:

  1. Заголовок (Header)

  2. Расширения (Extensions)

Заголовок

Заголовок лога соответствует стандарту CEF и имеет следующий формат:

CEF:0|<vendor>|<product>|<version>|<event id>|<message>|<severity>|
  • Vendor. Производитель (например, Gramax).

  • Product. Название продукта (например, GES).

  • Version. Версия продукта (например, 1.0).

  • Event ID. Уникальный идентификатор события, который определяется на основе типа сообщения. Маппинг ключей сообщений к event id ведется через словарь (например, invalidCredentials 1004).

  • Message. Человеко-понятное описание события, получаемое из словаря сообщений.

  • Severity. Числовое значение, характеризующее уровень важности события. Значения severity мапятся от уровней логирования следующим образом:

    • Debug: 1

    • Info: 3

    • Warn: 5

    • Error: 7

    • Fatal: 10

Расширения

После заголовка через разделитель | добавляются расширения — дополнительные данные, извлеченные из контекста события. Каждый параметр расширения задается в виде пары:

<cefField>=<value>

Расширения позволяют передать подробную информацию о событии, например, идентификатор запроса, IP-адрес, email пользователя, детали ошибки и т.д.

Контекст и маппинг расширений

Для формирования CEF-расширений используется маппинг, где каждому полю контекста соответствует определенное CEF-поле.

Таблица сопоставления

Поле контекста

CEF поле (extension)

Поле контекста CEF поле (extension) Описание

requestIp

src

IP-адрес, с которого поступил запрос

requestId

-

Уникальный идентификатор запроса

userEmail

duser

Email пользователя (если указан)

user

duser

Email пользователя

login

duser

Логин юзера при публикации в Cloud

admin

suser

Email администратора

reason

reason

Причина отказа

error

reason

Детали ошибки

ssoType

cs5

Тип SSO-аутентификации

connectorType

cs5

Тип используемого коннектора

redirectUrl

cs6

URL, на который выполняется редирект

allowedUrls

msg=Allowed URLs:

Список разрешенных URL

fileName

fname

Имя файла (напр., файла конфигурации)

filePath

filePath

Полный путь к файлу или ресурсу

groupId

cs4

Идентификатор группы

directory

msg=Directory:

Путь к директории

fullPath

fullPath

Полный путь к файлу или ресурсу

resourceId

cs3

Идентификатор ресурса

oldValue

cs1

Предыдущее значение (до изменения)

newValue

cs2

Новое значение (после изменения)

missingVariables

msg=Missing variables:

Список отсутствующих переменных

url

request

URL, указанный в событии

daysLeft

cn1

Количество оставшихся дней до истечения лицензии

response

reason

Дополнительные данные ответа

options

msg=Options:

Опции ai сервиса на момент ошибки

Сопоставление сообщений и идентификаторов событий

Каждое событие в системе имеет свой ключ сообщения, который однозначно сопоставляется с:

  • Event ID. Уникальным идентификатором события.

  • Описание. Человеко-понятным сообщением.

Например:

  • invalidCredentials

    • Event ID: 1004

    • Message: «Invalid credentials»

  • disabledSsoAuth

    • Event ID: 1001

    • Message: «Disabled SSO auth»

  • addEditors (для административных изменений)

    • Event ID: 4001

    • Message: «Add editor»

Пример лога

Ниже приведены дополнительные примеры логов в формате CEF. В примерах поле id (которое соответствует идентификатору запроса) задается случайным UUID, а event id берется из маппинга для каждого сообщения.

Пример Logged in via SSO

Описание: Успешная авторизация.

  • Event ID: 1028

  • Message: «Logged in via SSO»

  • Severity: 3 (info)

  • Расширения:

    • id — уникальный идентификатор запроса (UUID)

    • src — IP-адрес запроса

    • ssoType — тип SSO

    • duser — email пользователя

Пример лога:

Mar 31 13:19:54 host CEF:0|Gramax|GES|1.0|1028|Logged in via SSO|3|id=75f78bfe-ec42-4fdc-969c-3f929dcc src=192.168.1.130 ssoType=azure duser=egor.zaidov@ics-it.ru

Пример Disabled SSO Auth

Описание: Событие при инициализации, которое информирует, что SSO-аутентификация отключена.

  • Event ID: 1001

  • Message: «Disabled SSO auth»

  • Severity: 5 (warn)

Пример лога:

Apr 01 14:25:30 host CEF:0|Gramax|GES|1.0|1001|Disabled SSO auth|5

Пример Add editor (Admin changes)

Описание: Административное изменение – добавление нового редактора.

  • Event ID: 4001

  • Message: «Add editor»

  • Severity: 3 (Info)

  • Расширения:

    • id — UUID запроса

    • src — IP-адрес запроса

    • suser — идентификатор администратора

    • newValue — новое значение(редактор)

Пример лога:

Apr 01 14:35:45 host CEF:0|Gramax|GES|1.0|4001|Add editor|3|id=ad2e5f9c-4b3d-47e8-9a6d-3c2e8d4f src=192.168.1.104 suser=admin@example.com newValue="new_editor" groupId = gramax