Use Event1644Reader.ps1 para analisar o desempenho da consulta LDAP no Windows Server
Este artigo descreve um script que ajuda a analisar a ID de evento 1644 do Active Directory no Windows Server. Revise as etapas para usar o script e, em seguida, analise seus problemas.
Número original do KB: 3060643
Sobre o script Event1644Reader.ps1
A ID de evento 1644 do Active Directory é registrada no log de eventos do Serviço de Diretório. Esse evento identifica pesquisas LDAP caras, ineficientes ou lentas que são atendidas por controladores de domínio do Active Directory. A ID de evento geral NTDS 1644 pode ser filtrada para registrar pesquisas LDAP no log de eventos dos Serviços de Diretório com base no número de objetos no banco de dados do Active Directory que foram visitados, no número de objetos que foram retornados ou no tempo de execução da pesquisa LDAP no controlador de domínio. Para obter mais informações sobre a ID de evento 1644, consulte Hotfix 2800945 adiciona dados de desempenho ao log de eventos do Active Directory.
Event1644Reader.ps1 é um script do Windows PowerShell que extrai dados de eventos 1644 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 infraestrutura e segurança principal Como encontrar consultas LDAP caras, ineficientes e de longa execução 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 garantia de qualquer tipo. A Microsoft também se isenta de todas as garantias implícitas, incluindo, sem limitação, quaisquer garantias implícitas de comercialização ou de adequação a uma finalidade específica. Todo o risco decorrente do uso ou desempenho dos scripts e da documentação de exemplo permanece com você. Em nenhuma circunstância a Microsoft, seus autores ou qualquer outra pessoa envolvida na criação, produção ou entrega dos scripts serão responsáveis por quaisquer danos (incluindo, sem limitação, danos por perda de lucros comerciais, interrupção de negócios, perda de informações comerciais ou outras perdas pecuniárias) decorrentes do uso ou da incapacidade de usar os scripts de exemplo ou a documentação, mesmo que a Microsoft tenha sido avisada da possibilidade de tais danos.
Suporte de pares online
Para obter suporte on-line entre pares, participe do Fórum Oficial da Equipe de Scripts! Para fornecer comentários ou relatar bugs em scripts de exemplo, inicie uma nova discussão na guia Discussões desse script.
Como usar o script
Para analisar melhor as consultas LDAP capturadas na ID de evento 1644, siga estas etapas:
Verifique se os controladores de domínio que você está solucionando problemas capturam metadados de evento 1644 aprimorados.
Observação
O Windows Server 2012 R2 adicionou o log de eventos 1644 aprimorado registrando a duração das consultas LDAP e outros metadados. O log de eventos 1644 aprimorado foi portado para Windows Server 2012, Windows Server 2008 R2 e Windows Server 2008 por 2800945 de hotfix.
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 o detalhamento 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. Redefina a engenharia de campo de volta para seu valor padrão de 0 quando você não estiver coletando ativamente eventos 1644. (Esta ação não requer uma reinicialização.)
Se as seguintes entradas do Registro existirem, altere os valores para o limite desejado em milissegundos. Se uma entrada específica do Registro 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\Limite de Tempo de Pesquisa (ms) 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\Limite de resultados de pesquisa ineficientes DWORD 1.000 Observação
- Quando o nível de log de Engenharia de Campo está habilitado e a entrada do Registro Limite de Tempo de Pesquisa (ms) não é usada ou é definida como 0, o valor padrão do limite de tempo é 30.000 milissegundos. (Esta ação não requer uma reinicialização.)
- Uma estratégia seria definir o valor do Registro para as configurações do Registro Limite de Resultados de Pesquisa Ineficiente e Limite de Resultados de Pesquisa Caro e, em seguida, focar nos eventos identificados pela retenção de tempo de pesquisa (ms). Comece com um valor maior, como 100 milissegundos, e 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. Defina as configurações de engenharia de campo, tempo de pesquisa, chave do Registro cara e ineficiente em todos os controladores de domínio nos quais você deseja revisar pesquisas LDAP.
Baixe o arquivo Event1644Reader.ps1 em Você pode obter o script na postagem do Blog de Infraestrutura e Segurança Principal Como localizar consultas LDAP caras, ineficientes e de longa execução no Active Directory para o computador que analisará os arquivos EVTX salvos do Active Directory Service que contêm 1644 eventos.
Esse computador deve ter o 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á.
Copie os logs de eventos do Serviço de Diretório salvos que contêm eventos 1644 dos controladores de domínio em que você habilitou o log de eventos 1644 para o computador de análise 1644.
No Windows Explorer, clique com o botão direito do mouse no arquivo Event1644Reader.ps1 e selecione Executar com o PowerShell.
Veja a seguir a captura de tela desta etapa:
Pressione Y para ignorar a Política de Execução do PowerShell conforme necessário.
Especifique o caminho dos arquivos EVTX a serem analisados.
Quando você vir o prompt como a captura de tela a seguir, execute as seguintes ações:
- 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 do serviço de diretório de nível superior localizados no caminho de destino sempre que o script é executado.
Abra a planilha para revisar os dados e percorrer a série de guias e, em seguida, salve a planilha do Excel conforme necessário. Para obter mais informações sobre as guias na planilha, consulte a seção Passo a passo da planilha do Excel criada por 1644Reder.ps1 .
Observação
*.csv arquivos criados pela ferramenta não são removidos automaticamente. Considere limpar arquivos *.csv após a conclusão da investigação.
Mais informações
Passo a passo da planilha do Excel criada por 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:
Tabulação | Descrição |
---|---|
Dados brutos | Cada campo de dados capturado pela ID de evento 1644 é importado para colunas discretas. A filtragem de dados é habilitada automaticamente para que você possa classificar ou filtrar em qualquer cabeçalho de coluna. Se os logs de eventos 1644 de vários controladores de domínio residirem 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. Os detalhes do detalhamento expõem os principais filtros (como a consulta LDAP), os IPs do cliente que emitiram essas consultas e os carimbos de data e hora dessas consultas. |
Top_Callers | Lista os endereços IP do cliente que emitiram consultas LDAP em ordem decrescente de contagem de pesquisa com porcentagem do total geral. A porcentagem do total acumulado ajuda a identificar os principais chamadores. (Ou seja, os 10 ou 20 principais chamadores podem estar gerando 80% do volume de consultas, supondo que muitas chamadas sejam seu problema). Os detalhes do detalhamento expõem filtros e etapas de data e hora que cada LDAP emitido pelo cliente consulta em um determinado exemplo. |
Top_Filters | Lista as consultas LDAP emitidas com mais frequência em ordem decrescente de volume. Isso inclui o tempo médio de pesquisa. Os detalhes do detalhamento expõem o endereço IP do cliente LDAP e a data e hora em que cada consulta foi enviada. |
TotalSearchTime por chamadores | Lista os endereços IP do cliente em ordem decrescente do tempo total de pesquisa em todas as consultas LDAP na amostra. Os detalhes do detalhamento identificam as consultas LDAP e a data e a hora em que cada consulta foi emitida. |
TotalSearchTime por filtros | Lista as consultas LDAP em ordem decrescente do tempo total de pesquisa. Os detalhes do detalhamento expõem o endereço IP do cliente LDAP e a data e a hora em que cada consulta correspondente foi enviada. |
Classificações de tempo de pesquisa | Exibe o número de consultas LDAP que ocorreram em quartis 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 deseja que as consultas LDAP emitidas pelos servidores Exchange sejam resolvidas em 50 milissegundos ou menos. Portanto, o primeiro grupo de quartil se concentra nesse "balde" de tempo. |
Pivô em branco | Esta é uma tabela dinâmica em branco que você pode alterar conforme necessário para mostrar os dados específicos do seu cenário. |
Análise de cenários
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 emitidas excessivamente, consultas ineficientes, alguma combinação dessas consultas, esgotamento do pool ATQ (Fila de Thread Assíncrono) ou muitas notificações de alteração.
Se os clientes emitirem consultas LDAP caras, ineficientes ou com muitas perguntas, use Event1644Reader.ps1 para coletar dados sobre os 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 paradas de serviço, concentre-se nos principais clientes de chamada 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 Outra estratégia é usar uma abordagem de divisão por dois para cobrir serviços ou remover aplicativos que estão gerando consultas LDAP. As consultas emitidas podem implicar o aplicativo ou processo de chamada. |
Instale um otimizador de consulta LDAP atualizado. | O 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 portados para o Windows Server 2008 R2 e o Windows Server 2012 no hotfix 2862304. |
Verifique se os clientes estão enviando consultas para controladores de domínio ideais para o 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 os sites do Active Directory e as definições de sub-rede existem para computadores cliente e servidor no Active Directory. Certifique-se de que os aplicativos não tenham referências embutidas em código a controladores de domínio de site remoto ou a controladores de domínio graváveis para leitura somente quando existirem controladores de domínio ideais para o site. |
Trabalhe com desenvolvedores de software para reduzir a frequência com que as consultas são emitidas. Isso inclui o uso de cache. | Mesmo consultas emitidas com eficiência podem derrubar um controlador de domínio de tamanho e configuração apropriadas se as consultas forem emitidas com muita frequência. Os aplicativos podem ter que limitar o volume de consultas ou armazenar em cache os resultados da consulta para reduzir a carga de rede, LDAP e CPU. |
Otimize a consulta LDAP para ser executada mais rapidamente. | A sintaxe da consulta pode ter que ser reestruturada para ser executada mais rapidamente. Mover elementos de consulta para a esquerda ou 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 abaixo 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. | A adição de índices pode melhorar o desempenho da consulta. Isso tem o efeito colateral de aumentar o tamanho do banco de dados e pode atrasar temporariamente a replicação do Active Directory durante a compilação do índice. |
Determine se existe um defeito de código no otimizador de consulta e em outros componentes. | Defeitos no otimizador de consulta LDAP e em 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 diferentes do inglês.
Por exemplo, isso ocorre em um computador quando o cmdlet Get-Culture do 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 captura de tela a seguir:
Para resolver esse problema, altere o símbolo decimal para um ponto (.) no item Configurações de região no Painel de controle.
Para obter mais informações sobre consultas LDAP, consulte o seguinte blog: Como encontrar consultas LDAP caras, ineficientes e de longa execução no Active Directory