Verifique continuamente a conectividade LDAP com Controladores de Domínio (Verificação de Heartbeat LDAP)

2

trabalhando no desenvolvimento de scripts que são executados através de tarefas agendadas; Seu objetivo é direcionar alguns controladores de domínio e continuamente (a cada 2 segundos) fazer uma consulta LDAP direcionando esse DC em particular e despejar a saída em um csv find.Essentially, estou fazendo os passos abaixo.

$root = [ADSI]"LDAP://CN=$TargetDCName,OU=Domain Controllers,DC=Fabricom,DC=com"
$search = [adsisearcher]$root
$Search.Filter = "(&(objectClass=computer))"
$Search.SearchScope = "base"
$Obj = $Search.Findone()
$Obj = $Obj.Path
$DateFormatted = Get-Date -uformat "%Y-%m-%d_%I-%M-%S-%p"
$Data = $DateFormatted + "," + $TargetDCName+ "," + "$Obj"
Add-Content -Path $Path -Value $Data

Agora estou com poucas dúvidas; 1.) O que estou fazendo acima faz sentido como verificação de conectividade LDAP, já que estou consultando um DC usando o mesmo DC como ROOT / Base. (O código acima confirma que a conectividade LDAP existe para aquele DC específico de qualquer aplicativo que está configurado corretamente?)

2.) Esta questão é sobre powershell, como obter logs de erro LDAP no powershell? Eu quero testá-lo contra um inexistente ou um DC que é desligado, que evento de log eu deveria esperar e como capturá-lo.

3.) Mesmo que a pergunta 2, se o DC está tendo problemas de replicação, ele afeta a conectividade LDAP? que logs devem ser capturados e como? Abaixo estão alguns dos erros de replicação, algum desses eventos causa problemas à conectividade LDAP?

** - > (1256) O sistema remoto não está disponível. Para obter informações sobre solução de problemas de rede, consulte a Ajuda do Windows.    - > (1722) O servidor RPC não está disponível.    - > (8206) O serviço de diretório está ocupado.    - > (8438) O serviço de diretório está muito ocupado para concluir a operação de replicação neste momento. **

4.) Como identificar a latência de uma consulta LDAP? Como esse script é executado por conta própria, existe uma maneira de determinar a que horas ele levou ou mediu sua latência?

por favor, deixe-me saber se mais informações são necessárias.

    
por Darktux 07.07.2014 / 17:17

1 resposta

8

Does what i am doing above make sense as LDAP connectivity check

Executar isto a cada 2 segundos é um exagero. É muito. Se você for fazer isso, considere alongar o intervalo para verificar apenas uma vez a cada 5 minutos ou mais. Os servidores LDAP não são tão propensos a falhas que você precisa verificá-los a cada 2 segundos.

Does the above code confirm that LDAP connectivity exists to that particular DC from any application which is correctly configured?)

Sim, ele testará uma conexão LDAP. Não é o único caminho, e pode ou não ser o melhor caminho, mas é um caminho.

Eu também sou cético sobre como você gera um CSV em cada iteração do script (a cada 2 segundos!) e simplesmente sobrescreve o mesmo CSV a cada iteração. Se, em vez disso, você enviar a saída para, digamos, um banco de dados SQL e adicionar uma linha toda vez que o script for executado, você terá muito mais dados contextuais. Por exemplo, você poderia consultar o banco de dados e ver que teve uma interrupção de 30 minutos das 10h às 10h30 e, em seguida, teve uma interrupção de 5 minutos das 11:45 às 11:50 em 7 de julho , etc.

This question is regarding powershell , how to obtain LDAP error logs in powershell? I want to test it against a non existent or a DC which is shut down, what log event i should expect and how to capture it.

Você precisa criar seu próprio log de eventos. O Powershell não registra automaticamente cada erro e exceção sem que você o solicite. Considere usar Start-Transcript para registrar suas sessões do Powershell em um arquivo. Ou você pode usar o cmdlet New-Event para criar suas próprias mensagens de log de eventos personalizadas. Use blocos Try / Catch para capturar exceções facilmente. Você também pode usar a variável $ Error em seus scripts para ver o último erro.

Same as question 2, if DC is having replication issues, what logs should be captured and how?

Esta não é uma maneira apropriada de testar problemas de replicação em um controlador de domínio. Você deve usar repadmin.exe /showreps , o log de eventos do Serviço de Diretório, etc., para monitorar a integridade da replicação.

Editar: para resolver sua atualização,

Erros de RPC não se equiparam a erros de replicação do Active Directory. A disponibilidade do servidor RPC é um problema separado ... embora a causa subjacente dos problemas de disponibilidade do servidor RPC certamente também possa contribuir para problemas de replicação coincidentes. Mais solução de problemas seria necessária.

How to Identify Latency of an LDAP query? Since this script runs on its own, is there a way to determine what time its took or measure its latency?

Do ponto de vista do cliente, o cmdlet Measure-Command é bom em dizer quanto tempo demorou. Ou você pode usar o objeto .NET System.Diagnostics.Stopwatch subjacente. É bem preciso.

Do ponto de vista do servidor, você gostaria de assistir ao Monitor de desempenho. (Perfmon) Veja os objetos perfmon 'Directory Services' e NTDS - eles têm vários contadores de desempenho relacionados a quantas leituras de diretórios estão sendo feitas por segundo e seus tempos médios, comprimentos de filas, etc. Os contadores de desempenho são bons para geral, saúde, mas o servidor provavelmente não rastreará a latência de cada consulta LDAP individual. Se você estivesse interessado nessa medida, provavelmente desejaria fazer a medição do cliente.

    
por 07.07.2014 / 18:16