Устранение неполадок с подключениями LDAP с помощью ETW
Трассировка событий для Windows (ETW) может быть ценным средством устранения неполадок для служб домен Active Directory (AD DS). Для трассировки обмена данными по протоколу LDAP между клиентами Windows и серверами LDAP можно использовать etW, включая контроллеры домена AD DS.
Включение трассировки и запуск трассировки
Включение трассировки событий трассировки событий
Откройте редактор реестра и создайте следующий подраздел реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Трассировка\ProcessName
В этом подразделе ProcessName — это полное имя процесса, который требуется трассировать, включая его расширение (например, "Svchost.exe").
(Необязательно) В этом подразделе создайте новую запись с именем PID. Чтобы использовать эту запись, назначьте идентификатор процесса в качестве значения DWORD.
Если указать идентификатор процесса, трассировка трассировки трассировки трассирует только экземпляр приложения, имеющего этот идентификатор процесса.
Запуск сеанса трассировки
Откройте окно командной строки и выполните следующую команду:
tracelog.exe -start <SessionName> -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f <FileName> -flag <TraceFlags>
Заполнители в этой команде представляют следующие значения.
- <SessionName> — это произвольный идентификатор, используемый для метки сеанса трассировки.
Примечание.
Позже вам придется ссылаться на это имя сеанса при остановке сеанса трассировки.
- <FileName> указывает файл журнала, в который будут записываться события.
- <TraceFlags> должен быть одним или несколькими значениями, перечисленными в таблице флагов трассировки.
Завершение сеанса трассировки и отключение трассировки событий
Остановка трассировки
В командной строке введите следующую команду:
tracelog.exe -stop <SessionName>
В этой команде SessionName> — это то же имя, которое использовалось в команде <tracelog.exe -start.
Отключение etw
- В редакторе реестра удалите подраздел HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\ProcessName .
Значения флагов трассировки
Чтобы использовать флаг, замените значение <флага заполнителем TraceFlags> в аргументах команды tracelog.exe -start .
Примечание.
Можно указать несколько флагов с помощью суммы соответствующих значений флагов. Например, чтобы указать флаги DEBUG_SEARCH (0x00000001) и DEBUG_CACHE (0x00000010), соответствующее< значение TraceFlags> равно 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 | Журналы операций и ошибок, связанных с основными правилами кодирования (BER). Эти операции и ошибки включают проблемы в кодировке, проблемах размера буфера и т. д. |
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 Main и т. д.). |
DEBUG_API_ERRORS | 0x08000000 | Поддерживает неправильное использование API для ведения журнала. Например, этот параметр регистрирует данные, если операция привязки вызывается два раза в одном подключении. |
DEBUG_ERRORS | 0x10000000 | Журналы общих ошибок. Большинство этих ошибок можно классифицировать как ошибки инициализации модуля, ошибки SSL, переполнение или недополученные ошибки. |
DEBUG_PERFORMANCE | 0x20000000 | Записывает данные о статистике действий LDAP во время обработки глобальной статистики действий LDAP после получения ответа сервера для запроса LDAP. |
Пример
Рассмотрим приложение, App1.exe, которое задает пароли для учетных записей пользователей. Предположим, что App1.exe выдает непредвиденная ошибка. Чтобы использовать ETW для диагностики этой проблемы, выполните следующие действия.
В редакторе реестра создайте следующую запись реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Трассировка\App1.exe
Чтобы запустить сеанс трассировки, откройте окно командной строки и выполните следующую команду:
tracelog.exe -start ldaptrace -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f .\ldap.etl -flag 0x80000
После запуска этой команды DEBUG_BIND убедитесь, что ETW записывает сообщения трассировки в .\ldap.etl.
Запустите App1.exe и воспроизводит непредвиденное сообщение об ошибке.
Чтобы остановить сеанс трассировки, выполните следующую команду в командной строке:
tracelog.exe -stop ldaptrace
Чтобы предотвратить трассировку приложения другими пользователями, удалите запись реестра HKEY_LOCAL_MACHINE\system\CurrentControlSet\Services\для трассировки\ App1.exe\реестра.
Чтобы просмотреть сведения в журнале трассировки, выполните следующую команду в командной строке:
tracerpt.exe .\ldap.etl -o -report
Примечание.
В этой команде tracerpt.exe — это средство потребителя трассировки.