Ler em inglês

Compartilhar via


Como usar o ETW para solucionar problemas de conexões LDAP

O ETW (Rastreamento de Eventos para Windows) pode ser uma ferramenta de solução de problemas valiosa para o AD DS (Active Directory Domain Services). Você pode usar o ETW para rastrear as comunicações LDAP (protocolo LDAP) entre os clientes Windows e os servidores LDAP, incluindo os controladores de domínio AD DS.

Como ativar o ETW e iniciar um rastreamento

Para ativar o ETW

  1. Abra o Editor do Registro e crie a seguinte subchave do registro:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\ProcessName

    Nessa subchave, ProcessName é o nome completo do processo que você quer rastrear, incluindo a extensão (por exemplo, "Svchost.exe").

  2. (Opcional) Sob essa subchave, crie uma nova entrada chamada PID. Para usar essa entrada, atribua uma ID de processo como um valor DWORD.

    Se você especificar uma ID de processo, o ETW rastreará apenas a instância do aplicativo que tenha essa ID de processo.

Para iniciar uma sessão de rastreamento

  • Abra uma janela do Prompt de Comando e execute o seguinte comando:

    tracelog.exe -start <SessionName> -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f <FileName> -flag <TraceFlags>
    

    Os espaços reservados neste comando representam os seguintes valores.

    • <SessionName> é um identificador arbitrário usado para rotular a sessão de rastreamento.

    Observação

    Será necessário referir esse nome de sessão mais tarde ao parar a sessão de rastreamento.

Como encerrar uma sessão de rastreamento e desativar o Rastreamento de Eventos

Para parar o rastreamento

  • No prompt de comando, execute o seguinte comando:

    tracelog.exe -stop <SessionName>
    

    Neste comando, <SessionName> é o mesmo nome usado no comando tracelog.exe -start.

Para desligar o ETW

  • No Editor do Registro, exclua a subchave HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\ProcessName.

Valores para sinalizadores de rastreamento

Para usar um sinalizador, substitua o valor do sinalizador pelo espaço reservado <TraceFlags> nos argumentos do comando tracelog.exe -start.

Observação

É possível especificar vários sinalizadores usando a soma dos valores de sinalizador apropriados. Por exemplo, para especificar os sinalizadores DEBUG_SEARCH (0x00000001) e DEBUG_CACHE (0x00000010), o valor de <TraceFlags> apropriado será 0x00000011.

Nome do sinalizador Valor de sinalizador Descrição do sinalizador
DEBUG_SEARCH 0x00000001 Registra as solicitações de pesquisa e os parâmetros que são passados para essas solicitações. As respostas não são registradas aqui. Somente as solicitações de pesquisa são registradas. (Use DEBUG_SPEWSEARCH para registrar as respostas às solicitações de pesquisa.)
DEBUG_WRITE 0x00000002 Registra as solicitações de gravação e os parâmetros que são passados para essas solicitações. As solicitações de gravação incluem as operações de inclusão, exclusão, modificação e extensão.
DEBUG_REFCNT 0x00000004 Registra os dados de contagem de referência e as operações para conexões e solicitações.
DEBUG_HEAP 0x00000008 Registra todas as alocações de memória e versões de memória.
DEBUG_CACHE 0x00000010 Registra a atividade de cache. Esta atividade inclui adições, remoções, acertos, erros e assim por diante.
DEBUG_SSL 0x00000020 Registra informações e erros de SSL.
DEBUG_SPEWSEARCH 0x00000040 Registra todas as respostas do servidor às solicitações de pesquisa. Essas respostas incluem os atributos solicitados, além de todos os dados recebidos.
DEBUG_SERVERDOWN 0x00000080 Registra os erros de conexão e de servidor inoperante.
DEBUG_CONNECT 0x00000100 Registra os dados relacionados ao estabelecimento de uma conexão.
Use DEBUG_CONNECTION para registrar outros dados relacionados a conexões.
DEBUG_RECONNECT 0x00000200 Registra a atividade de reconexão automática. Esta atividade inclui as tentativas de reconexão, falhas e os erros relacionados.
DEBUG_RECEIVEDATA 0x00000400 Registra a atividade relacionada ao recebimento de mensagens do servidor. Essa atividade inclui eventos como "aguardando a resposta do servidor" e a resposta recebida do servidor.
DEBUG_BYTES_SENT 0x00000800 Registra todos os dados enviados pelo cliente LDAP ao servidor. Essa função é essencialmente o registro em log de pacotes, mas sempre registra dados não criptografados. (Se um pacote for enviado por SSL, essa função registrará o pacote não criptografado). Esse registro poderá ser detalhado. Esse sinalizador provavelmente será melhor usado isoladamente ou combinado com DEBUG_BYTES_RECEIVED.
DEBUG_EOM 0x00001000 Registra os eventos relacionados ao alcance do final de uma lista de mensagens. Esses eventos incluem informações como "lista de mensagens limpa" e assim por diante.
DEBUG_BER 0x00002000 Registra as operações e os erros relacionados a BER (Regras Básicas de Codificação). Esses erros e operações incluem problemas de codificação, problemas de tamanho de buffer e assim por diante.
DEBUG_OUTMEMORY 0x00004000 Registra falhas para alocar memória. Também registra falhas para calcular a memória necessária (por exemplo, um estouro que ocorre ao computar o tamanho do buffer necessário).
DEBUG_CONTROLS 0x00008000 Registra os dados relacionados a controles. Esses dados incluem os controles que são inseridos, os problemas que afetam os controles, os controles obrigatórios em uma conexão e assim por diante.
DEBUG_BYTES_RECEIVED 0x00010000 Registra todos os dados recebidos pelo cliente LDAP. Esse comportamento é essencialmente o registro em log de pacotes, mas sempre registra dados não criptografados. (Se um pacote for enviado por SSL, essa opção registrará o pacote não criptografado). Esse tipo de registro poderá ser detalhado. Esse sinalizador provavelmente é melhor usado isoladamente ou combinado com DEBUG_BYTES_SENT.
DEBUG_CLDAP 0x00020000 Registra os eventos específicos para UDP e LDAP sem conexão.
DEBUG_FILTER 0x00040000 Registra os eventos e erros encontrados ao construir um filtro de pesquisa.
Observação Esta opção registra eventos de clientes apenas durante a construção do filtro. Não registra as respostas do servidor sobre um filtro.
DEBUG_BIND 0x00080000 Registra os eventos e erros de associação. Esses dados incluem as informações de negociação, de êxito na associação, de falha na associação e assim por diante.
DEBUG_NETWORK_ERRORS 0x00100000 Registra os erros gerais de rede. Esses dados incluem os erros de envio e recebimento.
Observação Se uma conexão for perdida ou se não for possível acessar o servidor, a marca DEBUG_SERVERDOWN será a preferencial.
DEBUG_VERBOSE 0x00200000 Registra as mensagens gerais. Use essa opção para todas as mensagens que tendem a gerar uma grande quantidade de saída. Por exemplo, registra as mensagens como "fim da mensagem alcançado", "o servidor ainda não respondeu" e assim por diante. Essa opção também é útil para mensagens genéricas.
DEBUG_PARSE 0x00400000 Registra os eventos e os erros gerais de mensagens, além de eventos e erros de análise e codificação de pacotes.
DEBUG_REFERRALS 0x00800000 Registra os dados sobre as referências e busca as referências.
DEBUG_REQUEST 0x01000000 Registra o rastreamento das solicitações.
DEBUG_CONNECTION 0x02000000 Registra os dados e os erros gerais de conexão.
DEBUG_INIT_TERM 0x04000000 Registra a inicialização e a limpeza do módulo (DLL principal e assim por diante).
DEBUG_API_ERRORS 0x08000000 Dá suporte ao registro em log de uso incorreto da API. Por exemplo, essa opção registrará os dados se a operação de associação for chamada duas vezes na mesma conexão.
DEBUG_ERRORS 0x10000000 Registra os erros gerais. A maioria desses erros pode ser categorizada como erros de inicialização de módulo, erros de SSL ou erros de estouro ou estouro negativo.
DEBUG_PERFORMANCE 0x20000000 Registra os dados sobre as estatísticas de atividade LDAP globais do processo após receber uma resposta do servidor para uma solicitação LDAP.

Exemplo

Considere um aplicativo, App1.exe, que define as senhas para contas de usuário. Suponha que o App1.exe produza um erro inesperado. Para usar o ETW para ajudar a diagnosticar esse problema, siga estas etapas:

  1. No Editor do Registro, crie a seguinte entrada de registro:

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe

  2. Para iniciar uma sessão de rastreamento, abra uma janela do Prompt de Comando e execute o seguinte comando:

    tracelog.exe -start ldaptrace -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f .\ldap.etl -flag 0x80000
    

    Após esse comando iniciar, o DEBUG_BIND garantirá que o ETW grave as mensagens de rastreamento em .\ldap.etl.

  3. Inicie o App1.exe e reproduza o erro inesperado.

  4. Para parar a sessão de rastreamento, execute o seguinte comando no prompt de comando:

     tracelog.exe -stop ldaptrace
    
  5. Para evitar que outros usuários rastreiem o aplicativo, exclua a entrada de registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe.

  6. Para revisar as informações no log de rastreamento, execute o seguinte comando no prompt de comando:

     tracerpt.exe .\ldap.etl -o -report
    

    Observação

    Neste comando, tracerpt.exe é uma ferramenta de consumidor de rastreamento.


Recursos adicionais

Treinamento

Módulo

Solucionar problemas do Active Directory - Training

Saiba como solucionar problemas com falhas no serviço AD DS ou degradação de desempenho. Saiba como recuperar objetos de segurança e o banco de dados do AD DS excluídos e como solucionar problemas com autenticação híbrida.

Eventos

Windows Server Summit

29 de abr., 14 - 30 de abr., 19

Join the ultimate Windows Server virtual event April 29-30 for deep-dive technical sessions and live Q&A with Microsoft engineers.

Sign up now