web-dev-qa-db-ja.com

ドメインコントローラーへの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.)ROOT/Baseと同じDC)を使用してDCをクエリしているので、上記で行っていることはLDAP接続チェックとして意味がありますか? (上記のコードは、正しく構成されているアプリケーションからの特定のDC)へのLDAP接続が存在することを確認しますか?)

2.)この質問は、PowerShellに関するものですが、PowerShellでLDAPエラーログを取得する方法は?存在しないか、シャットダウンされたDC、予期するログイベント、およびそれをキャプチャする方法に対してテストしたいと思います。

3.)質問2と同じように、DCにレプリケーションの問題がある場合、LDAP接続に影響しますか?どのログをキャプチャする必要がありますか?どのように?以下にレプリケーションエラーの一部を示します。イベントはLDAP接続に問題を引き起こしますか?

**->(1256)リモートシステムは使用できません。ネットワークのトラブルシューティングについては、Windowsヘルプを参照してください。 ->(1722)RPCサーバーを使用できません。 ->(8206)ディレクトリサービスがビジーです。 ->(8438)ディレクトリサービスがビジー状態であるため、現時点ではレプリケーション操作を完了できません。**

4.)LDAPクエリの遅延を特定する方法は?このスクリプトは単独で実行されるため、かかった時間を判断したり、待ち時間を測定したりする方法はありますか?

さらに情報が必要な場合はお知らせください。

2
Darktux

LDAP接続チェックとして私が上で行っていることは意味がありますか

これを2秒ごとに実行するのはやり過ぎです。それは多すぎます。これを行う場合は、間隔を5分に1回程度のチェックに延長することを検討してください。 LDAPサーバーはクラッシュする傾向がないため、2秒ごとにチェックする必要があります。

上記のコードは、LDAP接続がその特定のDC正しく構成されているアプリケーションから)に存在することを確認していますか?)

はい、LDAP接続をテストします。それが唯一の方法ではなく、最善の方法である場合とそうでない場合がありますが、それは1つの方法です。

また、スクリプトの反復ごと(2秒ごと!)にCSVに出力し、反復ごとに同じCSVを上書きする方法についても懐疑的です。代わりに、出力をたとえばSQLデータベースに送信し、スクリプトが実行されるたびに行を追加すると、より多くのコンテキストデータが得られます。たとえば、DBにクエリを実行して、午前10時から午前10時30分まで30分間停止し、7月7日の午前11時45分から午前11時50分まで5分間停止したことを確認できます。 、など。

この質問は、PowerShellに関するものですが、PowerShellでLDAPエラーログを取得する方法は?存在しないか、シャットダウンされたDC、予期するログイベント、およびそれをキャプチャする方法に対してテストしたいと思います。

独自のイベントログを作成する必要があります。 Powershellは、要求なしにすべてのエラーと例外を自動的にログに記録するわけではありません。 Start-Transcriptを使用して、Powershellセッションをファイルに記録することを検討してください。または、New-Eventコマンドレットを使用して、独自のカスタムイベントログメッセージを作成することもできます。 Try/Catchブロックを使用して、例外を簡単にキャッチします。スクリプトで$ Error変数を使用して、最後のエラーを確認することもできます。

質問2と同じように、DCにレプリケーションの問題がある場合、どのログをどのようにキャプチャする必要がありますか?

これは、ドメインコントローラーでのレプリケーションの問題をテストする適切な方法ではありません。レプリケーションの状態を監視するには、repadmin.exe /showreps、ディレクトリサービスイベントログなどを使用する必要があります。

編集:更新に対処するには、

RPCエラーは、ActiveDirectoryレプリケーションエラーと同じではありません。 RPCサーバーの可用性は別の問題です... RPCサーバーの可用性の問題の根本的な原因は、偶発的なレプリケーションの問題の原因にもなります。さらにトラブルシューティングが必要になります。

LDAPクエリのレイテンシを特定する方法は?このスクリプトは単独で実行されるため、かかった時間を判断したり、待ち時間を測定したりする方法はありますか?

クライアントの観点からは、Measure-Commandコマンドレットは、何かにかかった時間を伝えるのに適しています。または、基盤となるSystem.Diagnostics.Stopwatch.NETオブジェクトを使用することもできます。かなり正確です。

サーバーの観点からは、パフォーマンスモニターを監視する必要があります。 (Perfmon)「ディレクトリサービス」およびNTDS perfmonオブジェクトを見てください。1秒あたりに実行されているディレクトリ読み取りの数、平均時間、キューの長さなどに関連するさまざまなパフォーマンスカウンターがあります。Perfmonカウンターは全体の状態ですが、サーバーはおそらく個々のLDAPクエリの待ち時間を追跡していません。その測定に興味がある場合は、クライアントから測定を行うことをお勧めします。

8
Ryan Ries