Share via


Usar Event1644Reader.ps1 para analisar o desempenho da consulta LDAP no Windows Server

Este artigo descreve um script que ajuda a analisar a ID do evento do Active Directory 1644 no Windows Server. Examine as etapas para usar o script e, em seguida, analise seus problemas.

Aplica-se a: Windows Server 2012 R2
Número de KB original: 3060643

Sobre o script Event1644Reader.ps1

A ID do evento do Active Directory 1644 está registrada no log de eventos do Serviço de Diretório. Esse evento identifica pesquisas caras, ineficientes ou lentas do LDAP (Protocolo de Acesso ao Diretório Leve) que são atendidas por controladores de domínio do Active Directory. A ID de evento geral do NTDS 1644 pode ser filtrada para registrar pesquisas LDAP no log de eventos do Directory Services com base no número de objetos no banco de dados do Active Directory que foram visitados, no número de objetos retornados ou no tempo de execução de pesquisa LDAP no controlador de domínio. Para obter mais informações sobre a ID do evento 1644, consulte Hotfix 2800945 adiciona dados de desempenho ao log de eventos do Active Directory.

Event1644Reader.ps1 é um script Windows PowerShell que extrai dados de 1644 eventos hospedados em logs de eventos salvos do Serviço de Diretório. Em seguida, ele importa esses dados para uma série de tabelas dinâmicas em uma planilha do Microsoft Excel para ajudar os administradores a obter insights sobre as cargas de trabalho LDAP que estão sendo atendidas pelos controladores de domínio e clientes que estão gerando essas consultas.

Como obter o script

Você pode obter o script na postagem Do Blog de Segurança e Infraestrutura Principal Como encontrar consultas LDAP caras, ineficientes e de execução longa no Active Directory.

Observação

O script é anexado na postagem do blog com o nome do arquivo Event1644Reader.zip

Isenção de responsabilidade do Script Center
Os scripts de exemplo não têm suporte em nenhum programa ou serviço de suporte padrão da Microsoft. Os scripts de exemplo são fornecidos COMO ESTÃO sem qualquer tipo de garantia. A Microsoft também se isenta de todas as garantias implícitas, incluindo sem limitações quaisquer garantias aplicáveis de padrões de comercialização ou de adequação a uma finalidade específica. Todos os riscos decorrentes do uso ou da execução da documentação ou scripts de exemplo serão de sua responsabilidade. De modo algum a Microsoft, seus autores ou qualquer outra pessoa envolvida na criação, produção ou veiculação dos scripts serão considerados responsáveis por quaisquer danos (incluindo sem limitações danos por perda de lucros comerciais, interrupção de negócios, perda de informações comerciais ou outras perdas pecuniárias) resultantes do uso ou da incapacidade de uso da documentação ou scripts de exemplo, mesmo que a Microsoft tenha sido alertada sobre a possibilidade de tais danos.

Suporte a pares online
Para suporte a pares online, participe do Fórum Oficial de Tipos de Script! Para fornecer comentários ou bugs de relatório em scripts de exemplo, inicie uma nova discussão na guia Discussões para este script.

Como usar o script

Para analisar melhor as consultas LDAP capturadas na ID do evento 1644, siga estas etapas:

  1. Verifique se os controladores de domínio que você está solucionando problemas de captura aprimoram ** 1644 metadados de evento.

    Observação

    Windows Server 2012 R2 adicionou log avançado de eventos 1644 registrando a duração das consultas LDAP e outros metadados. O registro em log de eventos do 1644 aprimorado foi deportado para Windows Server 2012, Windows Server 2008 R2 e Windows Server 2008 por 2800945 de hotfix.

  2. Defina o valor da seguinte entrada do Registro de Engenharia de Campo como 5: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\Field Engineering

    Observação

    Definir a verbosidade do log de engenharia de campo como 5 fará com que outros eventos sejam registrados no log de eventos do serviço de diretório. Redefinir a engenharia de campo de volta ao seu valor padrão de 0 quando você não estiver coletando ativamente 1644 eventos. (Essa ação não requer uma reinicialização.)

  3. Se as entradas de registro a seguir existirem, altere os valores para o limite desejado em milissegundos. Se uma entrada de registro específica não existir, crie uma nova entrada com esse nome e defina seu valor como o limite desejado em milissegundos.

    Caminho do Registro Tipo de dados Valor padrão
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Search Time Threshold (msecs) DWORD 30,000
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Expensive Search Results Threshold DWORD 10.000
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Inefficient Search Results Threshold DWORD 1.000

    Observação

    • Quando o nível de registro em log da Engenharia de Campo estiver habilitado e a entrada do registro msecs (limite de tempo de pesquisa) não for usada ou for definida como 0, o valor padrão do limite de tempo é de 30.000 milissegundos. (Essa ação não requer uma reinicialização.)
    • Uma estratégia seria definir o valor do registro para o Limite de Resultados da Pesquisa Ineficiente e as configurações de registro limite de resultados de pesquisa caros e, em seguida, focar em eventos identificados pelo msecs (search time hold). Comece com um valor maior como 100 milissegundos e, em seguida, diminua incrementalmente o valor à medida que você otimiza as consultas que estão ocorrendo em seu ambiente.
    • Event1644Reader.ps1 pode analisar eventos de vários controladores de domínio. Configure a engenharia de campo, o tempo de pesquisa, as configurações de chave de registro caras e ineficientes em todos os controladores de domínio nos quais você deseja examinar pesquisas LDAP.
  4. Baixe o arquivo Event1644Reader.ps1 de Você pode obter o script da postagem Do Blog de Segurança e Infraestrutura Principal Como encontrar consultas LDAP caras, ineficientes e de execução longa no Active Directory para o computador que analisará arquivos EVTX salvos do Active Directory Service que contêm 1644 eventos.

    Este computador deve ter Microsoft Excel 2010 ou uma versão posterior instalada e deve ter espaço em disco suficiente para hospedar os logs de eventos do serviço de diretório que o script analisará.

  5. Copie logs de eventos salvos do Serviço de Diretório que contêm 1644 eventos dos controladores de domínio em que você habilitou o registro em log de eventos 1644 no computador de análise 1644.

  6. No Windows Explorer, clique com o botão direito do mouse no arquivo Event1644Reader.ps1 e selecione Executar com o PowerShell.

    A seguir está a captura de tela desta etapa:

    Clique com o botão direito do mouse no arquivo Event1644Reader.ps1 e selecione Executar com o PowerShell.

  7. Pressione Y para ignorar a Política de Execução do PowerShell conforme necessário.

  8. Especifique o caminho dos arquivos EVTX a serem analisados.

  9. Ao ver o prompt como a seguinte captura de tela, execute as seguintes ações:

    Comando do PowerShell sobre como executar o arquivo Event1644Reader.ps1.

    • Pressione Enter para analisar todos os arquivos EVTX localizados no mesmo diretório que o arquivo Enent1644Reader.ps1.
    • Digite o drive:\path caminho que contém os arquivos EVTX a serem analisados.

    Observação

    Event1644Reader.ps1 analisa 1644 eventos em todos os logs de eventos de serviço de diretório de nível superior que estão localizados no caminho de destino sempre que o script é executado.

  10. Abra a planilha para examinar dados e percorrer a série de guias e salve a planilha do Excel conforme necessário. Para obter mais informações sobre as guias na planilha, consulte o Passo a passo da planilha do Excel criada por 1644Reder.ps1 seção.

    Observação

    *.csv arquivos criados pela ferramenta não são removidos automaticamente. Considere limpar *.csv arquivos após a conclusão da investigação.

Mais informações

Passo a passo da planilha do Excel criada pelo Event1644Reader.ps1

Event1644Reader.ps1 extrai metadados de 1644 eventos em logs de eventos salvos do Serviço de Diretório e importa esses dados para uma série de planilhas com guias em uma planilha do Microsoft Excel.

A tabela a seguir resume os dados contidos em cada guia:

Guia Descrição
RawData Cada campo de dados capturado pela ID do evento 1644 é importado para colunas discretas. A Filtragem de Dados está habilitada automaticamente para que você possa classificar ou filtrar em qualquer cabeçalho de coluna. Se 1644 logs de eventos de vários controladores de domínio residissem no mesmo diretório que o script do PowerShell ou o diretório especificado pelo administrador, use filtros para exibir consultas LDAP direcionadas a controladores de domínio específicos.
Top_StartingNode Fornece uma lista classificada das partições de diretório que são direcionadas por consultas LDAP em um determinado exemplo. Se a maioria das consultas estiver ocorrendo em uma única partição (esquema, configuração ou domínio), considere adicionar essa partição como um filtro nas tabelas dinâmicas restantes. Detalhes de detalhamento expõem os filtros superiores (como a consulta LDAP), os IPs do cliente que emitiram essas consultas e os carimbos de data e hora dessas consultas.
Top_Callers Listas endereços IP do cliente que emitiram consultas LDAP na ordem de contagem de pesquisa decrescente com percentual de grande total. A porcentagem do total de execução ajuda você a identificar os principais chamadores. (Ou seja, os 10 ou 20 principais chamadores podem estar gerando 80% do volume de consulta, supondo que muitas chamadas sejam seu problema). Detalhes de detalhamento expõem filtros e etapas de data e hora que cada LDAP emitido pelo cliente consulta em um determinado exemplo.
Top_Filters Listas consultas LDAP emitidas com mais frequência em ordem de volume descendente. Isso inclui o tempo médio de pesquisa. Detalhes de detalhamento expõem o endereço IP do cliente LDAP e a data e hora em que cada consulta foi enviada.
TotalSearchTime por Chamadores Listas endereços IP do cliente em ordem decrescente do tempo total de pesquisa em todas as consultas LDAP no exemplo. O detalhamento de detalhamento identifica as consultas LDAP e a data e hora em que cada consulta foi emitida.
TotalSearchTime por Filtros Listas consultas LDAP em ordem decrescente do tempo total de pesquisa. Detalhes de detalhamento expõem o endereço IP do cliente LDAP e a data e hora em que cada consulta correspondente foi enviada.
Classificações de tempo de pesquisa Exibe o número de consultas LDAP que ocorreram em quartéis baseados em tempo. Consultas mais lentas são ruins. Consultas mais rápidas são boas se não forem emitidas com muita frequência. O Microsoft Exchange quer que as consultas LDAP emitidas pelos servidores do Exchange sejam resolvidas em 50 milissegundos ou menos. Então, o primeiro grupo quartil se concentra nesse tempo "bucket".
Pivô em branco Esta é uma tabela dinâmica em branco que você pode alterar conforme necessário para mostrar os dados específicos para o cenário.

Análise de cenário

Se as consultas LDAP forem lentas ou se o uso da CPU for alto em controladores de domínio, isso poderá ser causado por consultas excessivamente emitidas, consultas ineficientes, alguma combinação dessas consultas, esgotamento do pool de ATQ (Fila de Thread Assíncrona) ou muitas notificações de alteração.

Se os clientes emitirem consultas LDAP caras, ineficientes ou muitas, use Event1644Reader.ps1 para coletar dados nos controladores de domínio para identificar os endereços IP dos clientes. Em seguida, mapeie essas consultas para a ID do processo, o nome do processo ou o aplicativo de chamada nos computadores cliente.

A tabela a seguir lista as possíveis otimizações para esse problema.

Otimização/mitigação Sinopse
Pare a carga de trabalho excessiva. Se muitas consultas LDAP causarem interrupções no serviço, concentre-se em clientes de chamada superiores e trabalhe para identificar e eliminar a origem da carga de trabalho excessiva.

As opções possíveis para identificar aplicativos incluem o uso de PROCMON, rastreamento ETL/ETW e análise de depuração para identificar o aplicativo que gera consultas LDAP no cliente. Outra estratégia é usar uma abordagem divide-por-dois de cobrir serviços ou remover aplicativos que estão gerando consultas LDAP. As consultas emitidas podem implicar o aplicativo de chamada ou o processo.
Instale um otimizador de consulta LDAP atualizado. Windows Server 2012 R2 contém um otimizador de consulta LDAP atualizado que melhora o desempenho da maioria das consultas. Os subconjuntos do Windows Server 2012 R2 são backported para o Windows Server 2008 R2 e Windows Server 2012 no hotfix 2862304.
Verifique se os clientes estão enviando consultas para controladores de domínio ideal do site. O envio de consultas LDAP pela WAN introduz latência de rede na entrega da consulta LDAP ao controlador de domínio e sua resposta ao cliente. Verifique se existem sites do Active Directory e definições de sub-rede para computadores cliente e servidor no Active Directory.

Verifique se os aplicativos não têm referências codificadas em código para controladores de domínio de site remoto ou para controladores de domínio que podem ser lidos somente quando os controladores de domínio ideais do site existirem.
Trabalhe com desenvolvedores de software para reduzir a frequência em que as consultas são emitidas. Isso inclui o uso de cache. Mesmo consultas emitidas com eficiência podem bater para baixo um controlador de domínio de tamanho apropriado e configurado se as consultas forem emitidas com muita frequência.
Os aplicativos podem ter que limitar o volume de consulta ou os resultados da consulta em cache para reduzir a carga de rede, LDAP e CPU.
Otimize a consulta LDAP para executar mais rapidamente. A sintaxe de consulta pode ter que ser reestruturada para ser executada mais rapidamente.
Mover elementos de consulta para a esquerda ou para a direita dentro do filtro pode melhorar o desempenho.
Adicionar um duplo "não" pode melhorar o desempenho da consulta.
Considere reduzir o número de objetos visitados iniciando consultas mais baixas na árvore.
Reduza o número de atributos que estão sendo retornados por consultas.
Adicione índices aos atributos do Active Directory conforme necessário. Adicionar índices pode melhorar o desempenho da consulta. Isso tem o efeito colateral do aumento do tamanho do banco de dados e pode atrasar temporariamente a replicação do Active Directory durante o build de índice.
Determine se existe um defeito de código no otimizador de consulta e em outros componentes. Defeitos no otimizador de consulta LDAP e outros componentes podem reduzir a taxa de transferência.

Problema conhecido

Os valores na planilha do Excel não são exibidos ou renderizados adequadamente em computadores que usam idiomas que não são inglês.

Por exemplo, isso ocorre em um computador quando o cmdlet Get-Culture Windows PowerShell indica a configuração regional da seguinte maneira:

PS C:\Windows\System32\WindowsPowerShell\v1.0> Get-Culture  
LCID Name DisplayName  
---- ---- -----------
1031 de-DE German (Germany)

PS C:\Windows\System32\WindowsPowerShell\v1.0> Get-UICulture

LCID Name DisplayName  
---- ---- -----------
1033 en-US English (United States)

Nessa situação, os números na planilha do Excel são renderizados como na seguinte captura de tela:

Números no problema da planilha do Excel.

Para resolve esse problema, altere o símbolo Decimal para um período (.) no item Configurações da região no Painel de Controle.

Para obter mais informações sobre consultas LDAP, confira o seguinte blog: Como encontrar consultas LDAP caras, ineficientes e de execução longa no Active Directory