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

Dar*_*tux 2 active-directory ldap domain-controller heartbeat windows-server-2008-r2

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

$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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

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

Rya*_*ies 8

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

每 2 秒运行一次是过大的。太多了。如果您打算这样做,请考虑将间隔延长至每 5 分钟左右仅检查一次。LDAP 服务器不太容易崩溃,您需要每 2 秒检查一次。

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

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

我也怀疑您如何在脚本的每次迭代(每 2 秒!)时输出到 CSV 并在每次迭代时简单地覆盖相同的 CSV。如果您改为将输出发送到 SQL 数据库并在每次脚本运行时添加一行,您将拥有更多上下文数据。例如,您可以查询数据库并看到您从上午 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 查询的延迟。如果您对该测量感兴趣,您可能希望从客户端进行测量。