持续检查与域控制器的 LDAP 连接(LDAP 心跳检查)

持续检查与域控制器的 LDAP 连接(LDAP 心跳检查)

正在开发通过计划任务运行的脚本;它的全部目的是针对几个域控制器并连续(每 2 秒)针对该特定 DC 执行 ldap 查询并将输出转储到 csv 查找。本质上,我正在执行以下步骤。

$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

现在我有几个疑问;1.) 我上面所做的是否有意义作为 LDAP 连接检查,因为我正在使用与 ROOT/Base 相同的 DC 来查询 DC。(上面的代码是否确认从任何正确配置的应用程序都存在到该特定 DC 的 LDAP 连接?)

2.) 这个问题与 powershell 有关,如何在 powershell 中获取 LDAP 错误日志?我想针对不存在或已关闭的 DC 进行测试,我应该期待什么日志事件以及如何捕获它。

3.) 与问题 2 相同,如果 DC 存在复制问题,是否会影响 LDAP 连接?应捕获哪些日志以及如何捕获?以下是一些复制错误,这些事件是否会导致 LDAP 连接出现问题?

** -> (1256) 远程系统不可用。有关网络故障排除的信息,请参阅 Windows 帮助。->(1722) RPC 服务器不可用。->(8206) 目录服务正忙。->(8438) 目录服务太忙,此时无法完成复制操作。**

4.) 如何识别 LDAP 查询的延迟?由于此脚本自行运行,是否有办法确定其花费的时间或测量其延迟?

如果需要更多信息,请告诉我。

答案1

我上面所做的作为 LDAP 连接检查是否有意义

每 2 秒运行一次有点过分了。太多了。如果您要这样做,请考虑将间隔延长到每 5 分钟左右检查一次。LDAP 服务器不太容易崩溃,因此您不需要每 2 秒检查一次。

上述代码是否确认从任何正确配置的应用程序到该特定 DC 都存在 LDAP 连接?)

是的,它将测试 LDAP 连接。这不是唯一的方法,也可能不是最好的方法,但它是一种方法。

我还怀疑您如何在脚本的每次迭代(每 2 秒!)时输出到 CSV,并且每次迭代都简单地覆盖相同的 CSV。如果您将输出发送到 SQL 数据库,并在每次运行脚本时添加一行,那么您将拥有更多的上下文数据。例如,您可以查询数据库并看到您在 7 月 7 日上午 10:00 到 10:30 之间有 30 分钟的中断,然后您在 7 月 7 日上午 11:45 到 11:50 之间有 5 分钟的中断,等等。

这个问题与 powershell 有关,如何在 powershell 中获取 LDAP 错误日志?我想针对不存在或已关闭的 DC 进行测试,我应该期待什么日志事件以及如何捕获它。

您需要创建自己的事件日志。Powershell 不会在您不要求的情况下自动记录每个错误和异常。考虑使用Start-Transcript将您的 Powershell 会话记录到文件中。或者您可以使用New-Eventcmdlet 创建自己的自定义事件日志消息。使用 Try/Catch 块轻松捕获异常。您还可以利用脚本中的 $Error 变量来查看最后一个错误。

与问题 2 相同,如果 DC 存在复制问题,应该捕获哪些日志以及如何捕获?

这不是测试域控制器上的复制问题的合适方法。您应该使用repadmin.exe /showreps、目录服务事件日志等来监视复制运行状况。

编辑:为了解决您的更新问题,

RPC 错误不等同于 Active Directory 复制错误。RPC 服务器可用性是一个单独的问题……尽管 RPC 服务器可用性问题的根本原因当然也会导致巧合的复制问题。需要进行更多故障排除。

如何确定 LDAP 查询的延迟?由于此脚本自行运行,是否有办法确定其花费的时间或测量其延迟?

从客户端的角度来看,Measure-Commandcmdlet 可以很好地告诉您某件事花了多长时间。或者您可以使用底层的 System.Diagnostics.Stopwatch .NET 对象。它非常准确。

从服务器的角度来看,您需要查看性能监视器。(Perfmon)查看“目录服务”和 NTDS perfmon 对象 - 它们有各种性能计数器,与每秒执行的目录读取次数、平均时间、队列长度等有关。Perfmon 计数器适用于全面的健康状况,但服务器可能不会跟踪每个 LDAP 查询的延迟。如果您对该测量感兴趣,您可能希望从客户端进行测量。

相关内容