Анализ логов при синхронизации с
LDAP
После завершения синхронизации с LDAP администратор в CTI-панели получит уведомление об успешности или неуспешности операции, а также о недостатке лицензий, если их не будет хватать на всех пользователей LDAP. Для детального анализа результатов синхронизации, ошибок и проблем можно просмотреть логи в файле LDAP.log, расположенном по пути: /[путь до приложения BPMSoft]/Logs/[Дата]/.
Ошибки соединения с сервером LDAP
Недоступность соединения с сервером LDAP характеризуется ошибкой вида:
System.DirectoryServices.Protocols.LdapException: The LDAP server is unavailable.
Можно наблюдать несколько предупреждений следующего вида:
WARN LDAP <WaitAndRetry>b__0 - Problem with connection to LDAP server. Trying again. WARN LDAP <WaitAndRetry>b__0 - Problem with connection to LDAP server. Trying again. WARN LDAP <WaitAndRetry>b__0 - Problem with connection to LDAP server. Trying again. WARN LDAP <WaitAndRetry>b__0 - Problem with connection to LDAP server. Trying again. WARN LDAP <WaitAndRetry>b__0 - Problem with connection to LDAP server. Trying again.
Это демонстрирует работу механизма отказоустойчивости, который попытался подключиться к LDAP-серверу 5 раз. Такое количество попыток задается системной настройкой «Количество попыток соединения с LDAP при ошибке» (код LdapSyncRetryCountOnFailure).
Ошибка вида:
System.DirectoryServices.Protocols.LdapException: The supplied credential is invalid.
Указывает, что при использовании Basic-аутентификации введен неверный логин или пароль. Убедитесь, что введен правильный логин и пароль.
Данная ошибка не повторяется механизмом отказоустойчивости. При возникновении данной ошибки в CTI-панель также приходит сообщение о неверном вводе логина или пароля.
Недостаток лицензий
При синхронизации пользователей через LDAP может возникнуть ситуация, что не всем пользователям хватает лицензий. Это не приведет к аварийному завершению синхронизации. Все пользователи, которым не хватило лицензий, и недостающие пакеты лицензий будут зафиксированы в файле LDAP.log.
В примере ниже представлен фрагмент лога о недостатке лицензий:
WARN LDAP AddLicForSSPOrGeneralUsers - (id: f97875e1-9d37-4313-8b46-ccf45a92d115) | Ivanov.Ivan | BPMSoft customer portal, BPMSoft Marketing, BPMSoft Sales, BPMSoft Service. WARN LDAP AddLicForSSPOrGeneralUsers - (id: 7d0b3ecc-3e76-4a63-8981-f33f8f4d5723) | Petrov.Petr | BPMSoft customer portal, BPMSoft Marketing, BPMSoft Sales, BPMSoft Service. WARN LDAP AddLicForSSPOrGeneralUsers - (id: 78073deb-839b-4fe8-b224-0745aefb2735) | Alexeev.Alex| BPMSoft customer portal, BPMSoft Marketing, BPMSoft Sales, BPMSoft Service.
Трем пользователям — Ivanov.Ivan, Petrov.Petr и Alexeev.Alex — не хватило следующих лицензий: BPMSoft customer portal, BPMSoft Marketing, BPMSoft Sales, BPMSoft Service. Для получения точной информации о доступных пакетах лицензий перейдите в раздел «Менеджер лицензий».
По необходимости перераспределите лицензии между пользователями или освободите текущие с помощью отзыва лицензий у других пользователей через «Менеджер лицензий» или на странице пользователя на вкладке «Лицензии». Подробнее о добавлении лицензий пользователям смотрите в статье Добавление лицензий.
Общие ошибки синхронизации
По завершении синхронизации в файле LDAP.log появится запись:
User import finished! SyncResult: LDAP synchronization completed
Если в логе отсутствует строка Errors, значит, проблем не возникло. В противном случае там будет указано количество ошибок, например: Errors – 14.
Рассмотрим возможные причины, по которым в строке результата синхронизации появляется Errors.
Дубли контактов
При импорте пользователей процесс синхронизации с LDAP ищет контакт по ФИО, полученному из LDAP. Если контакта с таким ФИО нет, создается новый. Если контакт найден, он обновляется информацией, полученной из LDAP.
Может возникнуть ситуация, когда в системе обнаруживается несколько контактов с одинаковым ФИО. В этом случае пользователь из LDAP пропускается, а в Errors добавится новая ошибка.
Чтобы найти пользователя, на которого повлияла эта проблема, посмотрите в LDAP.log строку вида:
Several contacts found that can be duplicates of user Ivanov.Ivan
Если пользователь не существовал в системе, то при такой ошибке он не будет создан. Если он уже есть в BPMSoft, то не обновится актуальной информацией.
Чтобы устранить дубли контактов, выполните следующие шаги:
- Найдите в домене, указанном в логе, ФИО пользователя.
- Перейдите в раздел «Контакты» и выполните поиск по этому ФИО.
- Удалите дубликаты с помощью инструментов дедупликации.
В системе уже существует пользователь с таким же логином
При импорте пользователей из LDAP может возникнуть проблема, если в системе уже есть пользователь с таким же логином, но не связанный с LDAP. Связь с пользователем в LDAP определяется по идентификатору LdapEntryId в таблице SysAdminUnit.
Когда появляется эта ошибка, счетчик Errors увеличивается. Информацию об ошибке можно найти в файле LDAP.log. Пример сообщения:
Existing user has the LDAP username – Ivanov.Ivan
Рекомендуется удалить существующего пользователя или, если его важно сохранить, изменить логин.
Пользователь уже создан для найденного контакта
Эта ошибка увеличивает счетчик Errors на единицу. В журнале LDAP.log появляется запись:
User is already created for the found contact (Иванов Иван Иванович)
Ошибка может возникнуть, если значение настройки «Максимальная степень параллелизма при обработке LDAP-групп» (код MaxDegreeOfParallelismWhileProcessingLdapGroups) установлено больше 1. На синхронизацию пользователей эта ошибка не влияет, ее можно проигнорировать.
Не найден контакт для указанного LDAPEntryId
Could not find contact for ldapEntryId=
Это уведомление, а не ошибка. Оно сообщает, что при обновлении контактов существующих пользователей LDAP перед их импортом не был найден контакт. Контакт будет создан на этапе импорта пользователей LDAP.
Основные этапы синхронизации в журнале LDAP.log
В журнале LDAP.log можно найти основные этапы синхронизации с LDAP, узнать их длительность выполнения, а также увидеть на каком этапе произошла та или иная ошибка.
Начало импорта элементов LDAP
Основной механизм синхронизации с LDAP реализуется через бизнес-процесс «Синхронизировать данные о пользователях с LDAP». Его выполнение начинается с операции импорта элементов LDAP. Необходимо зафиксировать время запуска этого бизнес-процесса в разделе «Журнал процессов». Затем по этому времени можно найти первую запись в журнале LDAP.log, которая имеет следующий формат:
INFO LDAP .ctor - Start authentication LDAP connection.
Такая запись свидетельствует о начале этапа импорта элементов LDAP.
Самая последняя запись в журнале LDAP.log следующего вида:
INFO LDAP .ctor - Authentication LDAP connection has successful.
до записи:
INFO LDAP SyncWithLDAPAsync - SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. 0 users became active
информирует о завершении импорта элементов LDAP. SyncID уникален для каждого выполнения синхронизации.
Чтение пользователей LDAP из домена
Запись в журнале вида:
INFO LDAP SyncWithLDAPAsync - SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. 0 users became active
указывает на то, что было произведено чтение пользователей LDAP из домена согласно группам LDAP, которые были получены ранее на этапе импорта элементов LDAP. Также произошло обновление признака Active у ранее синхронизированных пользователе LDAP на прошлых итерациях синхронизации. Обновление произошло согласно признаку активности пользователей в домене.
Изменении пользователей LDAP
Затем выполняется обновление информации об изменении пользователей LDAP, если есть, а также обновление email, номера телефона и должностей. Справочник должностей также наполняется новыми записями, если они не существуют. Эти операции происходят до следующей записи в журнале LDAP.log:
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. LDAP fields have been updated for 0 user(s)
Проверка синхронизированных ранее пользователей LDAP
Запись в журнале вида:
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. 0 users from deleted groups were deactivated
говорит о том, что была произведена проверка всех синхронизированных ранее пользователей LDAP в каждой группе LDAP. В рамках данной проверки были выполнены:
- Чтение групп LDAP из домена;
- Деактивация пользователей LDAP, которые находятся в роли, больше не синхронизируемой с LDAP (флаг «Синхронизировать с LDAP» на карточке роли был ранее активирован, теперь неактивен). Пользователь будет деактивирован в том случае, если у него больше нет ролей, у которых признак «Синхронизировать с LDAP» активен.
Сброс признака «Синхронизировать с LDAP»
До записи в журнале LDAP.log вида:
SyncWithLDAPAsync - SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. LDAP fields have been updated for 0 group(s)
выполняется установка признака «Синхронизировать с LDAP» в значение false для всех ролей, у которых группа LDAP пропала. То есть такие группы были удалены в домене. Затем осуществляется обновление ролей BPMSoft по полученной информации о связанных группах LDAP.
Проверка пользователей LDAP на принадлежность группе
Далее можно наблюдать несколько записей вида:
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. 0 user(s) removed from folder SomeLdapGroup
Для каждой группы проверяются пользователи LDAP следующим образом:
- Чтение из LDAP пользователей для конкретной группы LDAP;
- Пользователи, которые были удалены из группы LDAP, удаляются из роли BPMSoft.
Количество таких записей в журнале LDAP.log зависит от количества пользователей.
Добавление пользователей в роль BPMSoft
После этого можно наблюдать несколько записей следующего вида:
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. 0 user(s) added to folder SomeLdapGroup
Данный лог говорит о том, что определенное количество пользователей было добавлено в роль BPMSoft. Это происходит, когда в группу LDAP были добавлены пользователи.
Проверка изменений
Затем наблюдается несколько записей следующего вида (для каждой группы LDAP):
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. Minimal date of new users in group SomeLdapGroup: 25.08.2025 11:38:58
До этой записи происходила работа с промежуточным хранилищем, в котором находятся связи синхронизируемых пользователей LDAP с их синхронизируемыми группами LDAP. После этого определяется минимальная дата изменения среди пользователей LDAP для каждой группы. Если изменений среди пользователей не было, тогда вместе выше указанного лога будет следующее сообщение:
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. Group SomeLdapGroup doesn't have a new users
Начало импорта пользователей LDAP
Далее следует сообщение, которое говорит о том, что начался импорт пользователей LDAP:
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. Start user import.
Завершение импорта характеризуется сообщением:
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. User import finished! SyncResult: LDAP synchronization completed Users added: 10
Однако между этими двумя сообщениями есть еще несколько важных этапов: обработка групп и пользователей из LDAP, раздача лицензий и деактивация пользователей.
Обработка групп и пользователей из LDAP
Ниже представлен фрагмент журнала LDAP.log, который характеризует обработку LDAP-групп и пользователей LDAP на этапе импорта:
SyncID: ee3e5928-8462-4124-ac80-06a69a8a0b7b. LDAP user 1000_GUSR00968 saved SyncID: ee3e5928-8462-4124-ac80-06a69a8a0b7b. LDAP user 1000_GUSR00969 saved SyncID: ee3e5928-8462-4124-ac80-06a69a8a0b7b. Progress: 964 users processed from 1001 (Processing group - SomeLdapGroup) SyncID: ee3e5928-8462-4124-ac80-06a69a8a0b7b. LDAP user 1000_GUSR00970 saved SyncID: ee3e5928-8462-4124-ac80-06a69a8a0b7b. Progress: 963 users processed from 1001 (Processing group - SomeLdapGroup) SyncID: ee3e5928-8462-4124-ac80-06a69a8a0b7b. Progress: 965 users processed from 1001 (Processing group - SomeLdapGroup) SyncID: ee3e5928-8462-4124-ac80-06a69a8a0b7b. LDAP user 1000_GUSR00972 saved SyncID: ee3e5928-8462-4124-ac80-06a69a8a0b7b. LDAP user 1000_GUSR00971 saved
Данный лог можно отслеживать в режиме реального времени, например, с помощью команды:
tail -f [Путь до BPMSoft]/Logs/[Дата]/LDAP.log
Раздача лицензий
После завершения импорта в журнале появляются записи о выдаче лицензий. Эти записи возникают только при фактической раздаче лицензий. Для этого нужно активировать соответствующий чек-бокс на странице настройки интеграции с LDAP.
В журнале будут зафиксированы следующие действия:
AddLicForUsers: Start LicHelper.AddUsersAvailableLicences: Start LicHelper.AddUsersAvailableLicences: Stop AddLicForUsers: End
Одновременно отображаются пользователи, которым не хватило лицензий, а также пакеты лицензий, которые были исчерпаны.
Деактивация пользователей
Далее выполняется деактивация пользователей, которые были удалены из домена:
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. 10 user(s) were deactivated in system, because they were deleted from AD.
Если на странице настроек интеграции с LDAP включена опция «Синхронизировать только группы», то последним этапом будет деактивация пользователей LDAP, исключенных из группы LDAP.
SyncID: 8c4cd8b0-b7d9-4fd0-8ce8-2e5156b7b199. 15 users were deactivated
Включение Debug-логов
Для того чтобы включить логи отладки, необходимо перейти в корень приложения BPMSoft, открыть файл nlog.config и отредактировать строку:
<logger name="LDAP" writeTo="universalAppender" minlevel="Info" final="true" />
таким образом, чтобы minLevel имел значение Debug:
<logger name="LDAP" writeTo="universalAppender" minlevel="Debug" final="true" />
После перезапуска приложения BPMSoft при повторной синхронизации с LDAP в журнале LDAP.log появятся логи отладки.