Operations Manager – brak liczników wydajnościowych NTDS przyczyną błędu monitorowania kontrolera domeny.

Projekt bez tytułu (28)

Podczas monitorowania kontrolerów domeny pracujących na Windows 2012R2 czasem spotyka się serwery uparcie pokazywane jako „Critical”, chociaż żadne inne poza jednym monitorem (ATQ Average Threads Monitor) symptomy nie wskazują na ich zły stan. Po zbadaniu za pomocą Health Explorera, można przekonać się, że nie chodzi tu o wartość licznika przekraczającą dopuszczalne wartości, lecz o błąd monitorowania – wartości licznika nie da się pobrać.

PIotrBlog2

Monitor, który trwa w stanie błędu wykorzystuje skrypt VBS (Atq_Thread_Usage.vbs) do sprawdzenia licznika wydajnościowego, lecz w samym skrypcie jest fragment, którego działanie objawia się właśnie w naszym przypadku:

Piotr Blog3

Oczywiście w tej sytuacji nie ma sensu zmiana skryptu, lecz trzeba sprawdzić, czy istotnie pobieranie wartości licznika nie jest możliwe.

Ponieważ jawnie podane jest tu zapytanie WQL, można więc odpytać system (przykładowo korzystając z wbudowanego narzędzia wbemtest) i sprawdzić, co uzyskamy.

Na „zdrowym systemie” dostaniemy odpowiedź:

Piotr Blok4

Tak się składa, że w przypadku występowania błędu monitorowania okazuje się, że zapytanie uważane jest za błędne (odnosi się do nieistniejącej klasy). Może więc liczniki wydajnościowe wcale nie istnieją? Okazuje się, że tak właśnie jest, a odpowiedni klucz w rejestrze aż „zieje pustką”:

Biotr Blok 5

Dla porównania „zdrowy” kontroler domeny pokazuje zmienne:

Pioytr Blok 6

Jak to naprawić? Okazuje się, że nie jest to zbyt trudne:

 

  1. Przeprowadzić eksport (ze zdrowego kontrolera domeny Windows 2012R2) klucza rejestru HKLM\SYSTEM\CurrentControlSet\Services\NTDS\Performance
    do pliku.
  2. Uzyskany plik REG skopiować na kontroler, na którym występuje błąd i przeprowadzić jego import
  3. Na koniec wywołać polecenie
    lodctr /R

Nie jest wymagany restart systemu. Przełącznik w poleceniu musi być dużą, a nie małą literą „R”. Gdy wszystko przebiegnie pomyślnie w rejestrze obecne będą wpisy (ObjectList zmieni wartość przy okazji), a po pewnym czasie błąd ustąpi.

Jeżeli obecnie zauważymy błędy, to nie będą to tylko błędy samego monitorowania, lecz nieprawidłowe wartości licznika.

Mam wrażenie, że umieszczenie w skrypcie badającym wydajność ustawienia wartości „BAD” z powodu niemożności uzyskania wartości nie było zbyt dobrym pomysłem. Takie badanie powinien przeprowadzać inny monitor umieszczony w kategorii Configuration (a nie Performance). Wówczas łatwiej byłoby się zorientować, że to błąd konfiguracji, a nie wydajności systemu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *