Трассировка Эллес

Для поддержки трассировки в Эллес используется механизм коррелируемого логирования.

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

Механизм трассировки в Эллес обеспечивает установление корреляции между лог-записями, формируемыми как при обработке входящих запросов внешних клиентов, так и при выполнении внутренних операций. Корреляция позволяет объединять связанные события и управлять уровнем их детализации в соответствии с заданными правилами.

В текущей версии Эллес корреляция поддерживается только для запросов по протоколу LDAP.

Система логирования поддерживает включение в лог-записи уникального идентификатора в формате GUID (traceid). Этот идентификатор формируется при инициировании операции, сопровождающейся генерацией логов, и используется для связи всех записей, относящихся к одному запросу.

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

Для коррелированных событий может быть настроен отдельный уровень логирования (см. «Настройка уровня логирования»). Соответствующие записи могут направляться в отдельный лог-файл с использованием выделенного класса логирования — trace.

Для обеспечения единообразия и удобства последующей обработки может использоваться однострочный формат вывода логов, аналогичный формату записей в syslog. Он включается установкой значения конфигурационного параметра debug syslog format = always в разделе global файла smb.conf (см. описание параметра в разделе «Конфигурационные параметры»).

Параметры корреляции

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

Поддерживаются параметры:

  • client ip — список IP-адресов клиентов, к запросам от которых применяется правило;

    Пример значения: 192.168.0.1, 192.168.0.2.

  • client sid — список SID учетных записей, к запросам от которых применяется правило;

    Пример значения: S-1-5-21-3289515827-3284480267-3537100884-500, S-1-5-21-1290136491-5654321763-3616140445-500.

  • ldap filter pattern — подстрока, которая должна содержаться в фильтре LDAP-запроса, чтобы к нему применилось правило;

    Пример значения: (memberOf=someGroup).

  • ldap base — базовый контекст (base DN), который должен использоваться в LDAP-запросе, чтобы к нему применилось правило;

    Пример значения: dc=elles,dc=inno,dc=tech.

  • start time, end time — время начала и конца периода действия правила в формате ISO 8601;

    Пример значения: 2025-10-29T21:00:00.

  • protocol — список протоколов, к которым применяется правило;

    Пример значения: LDAP.

    В текущей версии Эллес корреляция поддерживается только для запросов по протоколу LDAP.
  • type — результат применения правила:

    • LOG (по умолчанию) — при логировании запросов, подпадающих под заданные параметрами критерии, используются существующие классы логирования и заданные в конфигурации или стандартные настройки уровня логирования;

    • DEBUG — при логировании запросов, подпадающих под заданные параметрами критерии, используются отдельный класс логирования trace и заданный для него в конфигурации уровень логирования.

Правила корреляции

В систему логирования Эллес параметры загружаются в виде правил, включаемых в конфигурацию контроллера домена Эллес (/app/inno-samba/etc/smb.conf) в формате:

[rule:<уникальное имя правила>]
client ip = <значение1>, <значение2>
client sid=<значение1>, <значение2>
ldap filter pattern=<значение1>
ldap base=<значение>
start time=<значение>
end time=<значение>
protocol=<значение1>, <значение2>
type=LOG|DEBUG

Если параметр в правиле не определен, он не учитывается. Правило применяется, если атрибуты входящего запроса соответствуют всем заданным в нем параметрам. Правилу без параметров удовлетворяют все входящие запросы.

Правила могут определяться как непосредственно в разделе global в smb.conf, так и в отдельном файле, который должен быть добавлен в конфигурацию с помощью директивы include. Например:

[global]
	...
	include = /app/inno-samba/etc/tracing-rules.conf
	...

Правила должны следовать друг за другом.

Для каждого из них в квадратных скобках должно быть указано уникальное имя после префикса rule.

На Рис. 1 представлены возможные варианты логирования входящего запроса в зависимости от заданных правил.

tracing rule processing
Рис. 1. Обработка правил корреляции

На схеме:

  1. Атрибуты поступившего запроса соответствуют параметрам в одном или нескольких правилах типа DEBUG (имеет приоритет над правилами типа LOG):

    • в каждую лог-запись добавляются traceid и имя правила;

    • если в конфигурации настроен класс логирования trace, логирование ведется в указанный файл с указанным уровнем;

    • если отдельная настройка для класса trace в конфигурации отсутствует, логи направляются в стандартный канал с данным классом.

  2. Атрибуты поступившего запроса соответствуют параметрам в одном или нескольких правилах типа LOG и не подпадают под критерии ни одного правила типа DEBUG:

    • в каждую лог-запись добавляются traceid и имя правила;

    • логирование ведется в соответствии с заданными в конфигурации или стандартными настройками.

  3. Атрибуты поступившего запроса не соответствуют параметрам ни в одном правиле — логирование ведется в соответствии с заданными в конфигурации или стандартными настройками.

Включение корреляции записей в логах

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

Общая последовательность настройки коррелируемого логирования на контроллере домена Эллес:

  1. Определите правила в файле /app/inno-samba/etc/tracing-rules.conf.
    Например:

    [rule:LDAPLoggingRule]
    client sid=S-1-5-21-3289515827-3284480267-3537100884-500, S-1-5-21-1290136491-5654321763-3616140445-500
    type=LOG
  2. Включите файл tracing-rules.conf в конфигурацию контроллера домена (/app/inno-samba/etc/smb.conf) с помощью include.
    Например:

    [global]
            netbios name =   ELLES-DC1
            realm =   ELLES.INNO.TECH
            server role =   active directory domain controller
            server services =   metrics_manager, s3fs, rpc, nbt, wrepl, ldap, cldap, kdc, drepl, winbindd, ntp_signd, kcc, dnsupdate, lacheck, disco, mt, core_manager
            workgroup =   ELLES
            include = /app/inno-samba/etc/tracing-rules.conf
    [sysvol]
            path =   /app/inno-samba/var/locks/sysvol
            read only =   No
    [netlogon]
            path =   /app/inno-samba/var/locks/sysvol/elles.inno.tech/scripts
            read only =   No
  3. При необходимости настройте класс логирования trace.
    Например:

    [global]
        ...
        log level = 5 trace:10@/var/log/trace.log
        ...

Внесенные в конфигурацию изменения применяются автоматически через 5 секунд после сохранения файла smb.conf.

Результат применения правила LDAPLoggingRule из примера выше к лог-записям (используется однострочный формат вывода):

2025-11-27T16:22:32.422703+03:00 elles-dc1 samba[25448]: traceid_ex=44e6790e-18c5-41f6-9642-b9c3fa0cb36b [LDAPLoggingRule],   ldapsrv_SearchRequest: ldb_request ONE dn=CN=Users,DC=ELLES,DC=INNO,DC=TECH filter=(objectClass=user)
2025-11-27T16:22:32.423794+03:00 elles-dc1 samba[25448]: traceid_ex=44e6790e-18c5-41f6-9642-b9c3fa0cb36b [LDAPLoggingRule],   ldapsrv_SearchRequest: LDAP Query: Duration was 0.00s, SearchRequest by S-1-5-21-3289515827-3284480267-3537100884-500 from ipv4:10.32.54.27:58414 filter: [(objectClass=user)] basedn: [CN=Users,DC=ELLES,DC=INNO,DC=TECH] scope: [ONE] result: Success