Устранение неполадок с подключениями LDAP с помощью ETW
трассировка событий для Windows (ETW) может быть важным средством устранения неполадок для доменные службы Active Directory (AD DS). ETW можно использовать для трассировки обмена данными по протоколуldapмежду клиентами Windows и серверами ldap, включая AD DS контроллеры домена.
Как включить ETW и запустить трассировку
Включение трассировки событий Windows
Откройте редактор реестра и создайте следующий подраздел реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\processName
В этом подразделе processName — это полное имя процесса, который необходимо отследить, включая его расширение (например, "Svchost.exe").
(Необязательно) В этом подразделе создайте новую запись с именем PID. Чтобы использовать эту запись, назначьте идентификатор процесса в виде значения типа DWORD.
Если указать идентификатор процесса, ETW будет отслеживать только экземпляр приложения с этим ИДЕНТИФИКАТОРом процесса.
Запуск сеанса трассировки
Откройте окно командной строки и выполните следующую команду:
tracelog.exe -start <SessionName> -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f <FileName> -flag <TraceFlags>
Заполнители в этой команде представляют следующие значения.
- <SessionName> — это произвольный идентификатор, который используется для обозначения сеанса трассировки.
Примечание
Вы должны будете обращаться к этому имени сеанса позже, когда вы останавливаете сеанс трассировки.
- <Имя файла> Указывает файл журнала, в который будут записываться события.
- <Флагов трассировки> должно быть одним или несколькими значениями, перечисленными в таблице флаги трассировки.
Завершение сеанса трассировки и отключение трассировки событий
Завершение трассировки
В командной строке выполните следующую команду:
tracelog.exe -stop <SessionName>
В этой команде <SessionName> имеет то же имя, которое использовалось в команде tracelog.exe-Start .
Отключение ETW
- В редакторе реестра удалите подраздел HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\processName .
Значения для флагов трассировки
Чтобы использовать флаг, замените значение флага для < заполнителя флагов трассировки> в аргументах команды tracelog.exe-Start .
Примечание
Можно указать несколько флагов, используя сумму соответствующих значений флагов. Например, чтобы указать флаги DEBUG_SEARCH (0x00000001) и DEBUG_CACHE (0x00000010), соответствующее < значение флагов трассировки> — 0x00000011.
Имя флага | Значение флага | Описание флага |
---|---|---|
DEBUG_SEARCH | 0x00000001 | Записывает в журнал запросы поиска и параметры, которые передаются в эти запросы. Ответы не регистрируются здесь. В журнал заносятся только запросы поиска. (Используйте DEBUG_SPEWSEARCH , чтобы регистрировать ответы на запросы поиска.) |
DEBUG_WRITE | 0x00000002 | Записывает в журнал запросы на запись и параметры, которые передаются в эти запросы. Запросы на запись включают в себя операции добавления, удаления, изменения и расширенных операций. |
DEBUG_REFCNT | 0x00000004 | Записывает данные подсчета ссылок и операции для подключений и запросов. |
DEBUG_HEAP | 0x00000008 | Записывает в журнал все выделения памяти и выпуски памяти. |
DEBUG_CACHE | 0x00000010 | Регистрирует активность кэша. Это действие включает в себя добавление, удаление, попаданий, промахов и т. д. |
DEBUG_SSL | 0x00000020 | Записывает сведения о SSL и ошибки. |
DEBUG_SPEWSEARCH | 0x00000040 | Записывает все ответы сервера на запросы поиска. Эти ответы включают атрибуты, которые были запрошены, а также все полученные данные. |
DEBUG_SERVERDOWN | 0x00000080 | Записывает ошибки сервера и подключения. |
DEBUG_CONNECT | 0x00000100 | Записывает данные, связанные с установлением соединения. Используйте DEBUG_CONNECTION для записи в журнал других данных, связанных с подключениями. |
DEBUG_RECONNECT | 0x00000200 | Регистрирует действие автоматического повторного подключения. Это действие включает повторные попытки подключения, сбои и связанные ошибки. |
DEBUG_RECEIVEDATA | 0x00000400 | Регистрирует действия, связанные с получением сообщений с сервера. Это действие включает в себя такие события, как "ожидание ответа от сервера" и ответ, полученный от сервера. |
DEBUG_BYTES_SENT | 0x00000800 | Записывает в журнал все данные, отправленные клиентом LDAP на сервер. Эта функция по сути ведет журнал пакетов, но всегда записывает в журнал незашифрованные данные. (Если пакет отправляется по протоколу SSL, эта функция записывает в журнал незашифрованный пакет.) Это ведение журнала может быть подробным. Этот флаг, вероятно, лучше всего использовать отдельно или в сочетании с DEBUG_BYTES_RECEIVED. |
DEBUG_EOM | 0x00001000 | Записывает события, связанные с достижением конца списка сообщений. Эти события включают такие сведения, как "список сообщений удалены" и т. д. |
DEBUG_BER | 0x00002000 | Записывает в журнал операции и ошибки, связанные с базовыми правилами кодирования (ЛИЧЕСТВО). Эти операции и ошибки включают проблемы с кодированием, проблемами размера буфера и т. д. |
DEBUG_OUTMEMORY | 0x00004000 | Регистрирует ошибки для выделения памяти. Также регистрирует любые сбои при вычислении требуемой памяти (например, переполнение, которое происходит при вычислении требуемого размера буфера). |
DEBUG_CONTROLS | 0x00008000 | Записывает данные, относящиеся к элементам управления. Эти данные включают вставленные элементы управления, проблемы, влияющие на элементы управления, обязательные элементы управления в соединении и т. д. |
DEBUG_BYTES_RECEIVED | 0x00010000 | Записывает все данные, получаемые LDAP-клиентом. Это, по сути, ведение журнала пакетов, но всегда записывает в журнал незашифрованные данные. (Если пакет отправляется по протоколу SSL, этот параметр записывает в журнал незашифрованный пакет.) Этот тип ведения журнала может быть подробным. Этот флаг, вероятно, лучше всего использовать отдельно или в сочетании с DEBUG_BYTES_SENT. |
DEBUG_CLDAP | 0x00020000 | Записывает события, относящиеся только к протоколу UDP и протоколу LDAP без подключения. |
DEBUG_FILTER | 0x00040000 | Регистрирует события и ошибки, возникающие при создании фильтра поиска. Примечание . Этот параметр записывает события клиента только во время построения фильтра. Он не регистрирует никаких ответов с сервера о фильтре. |
DEBUG_BIND | 0x00080000 | Регистрирует события и ошибки привязки. Эти данные включают сведения о согласовании, успешное выполнение привязки, сбой привязки и т. д. |
DEBUG_NETWORK_ERRORS | 0x00100000 | Записывает общие ошибки сети. Эти данные включают ошибки отправки и получения. Примечание . Если подключение потеряно или сервер недоступен, DEBUG_SERVERDOWN является предпочтительным тегом. |
DEBUG_VERBOSE | 0x00200000 | Записывает в журнал общие сообщения. Используйте этот параметр для всех сообщений, которые обычно создают большой объем выходных данных. Например, он записывает в журнал такие сообщения, как "конец сообщения", "сервер еще не ответил" и т. д. Этот параметр также полезен для универсальных сообщений. |
DEBUG_PARSE | 0x00400000 | Записывает в журнал общие события и ошибки сообщений, а также события и ошибки синтаксического анализа пакетов и кодирования. |
DEBUG_REFERRALS | 0x00800000 | Записывает данные о ссылках и отслеживании ссылок. |
DEBUG_REQUEST | 0x01000000 | Регистрирует отслеживание запросов. |
DEBUG_CONNECTION | 0x02000000 | Записывает в журнал общие данные и ошибки подключения. |
DEBUG_INIT_TERM | 0x04000000 | Записывает в журнал инициализацию и очистку модуля (основная библиотека DLL и т. д.). |
DEBUG_API_ERRORS | 0x08000000 | Поддерживает ведение журнала неправильного использования API. Например, этот параметр записывает данные в журнал, если операция привязки вызывается два раза в одном соединении. |
DEBUG_ERRORS | 0x10000000 | Регистрирует общие ошибки. Большинство этих ошибок можно классифицировать как ошибки инициализации модулей, ошибки SSL или ошибки переполнения или потери значимости. |
DEBUG_PERFORMANCE | 0x20000000 | Записывает в журнал данные о глобальной статистике действий LDAP после получения ответа от сервера на запрос LDAP. |
Пример
Рассмотрим приложение, App1.exe, которое задает пароли для учетных записей пользователей. Предположим, что App1.exe выдает непредвиденную ошибку. Чтобы использовать ETW для диагностики этой проблемы, выполните следующие действия:
В редакторе реестра создайте следующую запись реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe
Чтобы запустить сеанс трассировки, откройте окно командной строки и выполните следующую команду:
tracelog.exe -start ldaptrace -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f .\ldap.etl -flag 0x80000
После запуска этой команды DEBUG_BIND гарантирует, что ETW записывает сообщения трассировки в .\лдап.ЕТЛ.
Запустите App1.exe и воспроизведите непредвиденную ошибку.
Чтобы прерывать сеанс трассировки, выполните в командной строке следующую команду:
tracelog.exe -stop ldaptrace
Чтобы запретить другим пользователям выполнять трассировку приложения, удалите запись HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LDAP\Tracing\App1.exe .
Чтобы проверить сведения в журнале трассировки, выполните в командной строке следующую команду:
tracerpt.exe .\ldap.etl -o -report
Примечание
В этой команде tracerpt.exe является средством для потребителей трассировки .