Was können wir für Sie tun?

9 + 10 =

Bitte beachten Sie unsere Datenschutzerklaerung.

Präzise Zeitsynchronisation unter Windows: Unser Prüfskript für Zabbix

29.10.25 | anyWARE News

In komplexen IT-Umgebungen ist die korrekte Zeitsynchronisation eine oft unterschätzte Grundlage für Stabilität, Sicherheit und Nachvollziehbarkeit. Ob Active Directory, Kerberos, Zertifikate oder Logging – ohne konsistente Systemzeit geraten selbst die besten Systeme ins Stolpern. Gerade in Domänen mit gemischten Rollen (PDC, Member Server, Standalone-Systeme) und unterschiedlichen NTP-Quellen wird es schnell unübersichtlich, welche Maschine tatsächlich korrekt synchronisiert ist.

Um diese Herausforderung nachhaltig zu lösen, haben wir bei der anyWARE AG ein eigenes PowerShell-Prüfskript für Zabbix Agent 2 entwickelt, das die Zeitsynchronisation von Windows-Systemen bis ins Detail überprüft. Das Skript wurde speziell für Monitoring-Umgebungen konzipiert und ist vollständig sprachunabhängig, PowerShell 3-kompatibel und auf Robustheit ausgelegt.


Motivation: Warum ein eigenes Prüfskript?

Zwar bietet Windows mit w32tm und WMI bereits Bordmittel, um den Zeitdienst abzufragen, doch diese liefern unstrukturierte und teils sprachabhängige Ausgaben. Für ein Monitoring-System wie Zabbix, das strukturierte Werte erwartet, braucht es eine automatisierte, einheitliche und fehlerresistente Auswertung.

Unser Ziel war daher ein Skript, das:

  • unabhängig von Spracheinstellungen und Windows-Versionen funktioniert,
  • sowohl Domänen- als auch Standalone-Systeme korrekt unterscheidet,
  • NTP-Peers validiert und Offsets misst,
  • Kerberos-Funktionalität einfach überprüft,
  • und die Ergebnisse in JSON-Struktur für den Zabbix-Agent2 zurückgibt.

Aufbau und Funktionsweise

Das Skript ist modular aufgebaut und gliedert sich in mehrere logische Abschnitte:

1. Ermittlung der Systemrolle

Zunächst wird über die WMI-Klasse Win32_ComputerSystem die DomainRole des Systems abgefragt. Eine interne Funktion wandelt den numerischen Microsoft-Code (0–5) in sprechende Bezeichner um:

function Get-DomainRoleText {
  if ($role -eq 5) { return "PrimaryDomainController" }
}

Diese Information entscheidet später, welche Prüfpfade ausgeführt werden:

  • PDC prüft eigene Peers,
  • Domain-Member prüfen die NT5DS-Synchronisation,
  • Standalone-Systeme prüfen ihre konfigurierten NTP-Server.

2. Analyse der Windows-Zeitkonfiguration

Über HKLM:\SYSTEM\CurrentControlSet\Services\W32Time\Parameters liest das Skript die Parameter Type und NtpServer aus.
Damit erkennt es, ob das System z. B. auf NT5DS (Domänenhierarchie) oder NTP (manuelle Serverliste) eingestellt ist.

Falls keine Server in der Registry hinterlegt sind, erfolgt automatisch ein Fallback über w32tm /query /peers, um auch dynamische oder GPO-verteile Konfigurationen zu erfassen.


3. Validierung der NTP-Peers und Offsets

Für jeden gefundenen Peer wird ein Echtzeit-Offset über den Windows-Befehl w32tm /stripchart ermittelt.
Das Skript analysiert die Rückgabe, extrahiert den numerischen Offset und liefert ihn in Millisekunden zurück.

So lassen sich im Zabbix-Dashboard sofort Systeme erkennen, deren Zeitabweichung z. B. über 100 ms oder 1000 ms liegt. Diese Schwellenwerte werden über Parameter an das Skript übergeben und können pro Host angepasst werden.


4. Kerberos-Check als Bonusprüfung

Ein praktischer Zusatz ist die optionale Kerberos-Validierung.
Da Kerberos-Tickets stark von korrekter Zeit abhängen, wird über das Windows-Tool klist geprüft, ob das Subsystem grundsätzlich funktioniert.
Bei Problemen mit der Authentifizierung erkennt Zabbix sofort, ob die Ursache zeitbezogen ist oder tiefer im AD liegt.


Integration in Zabbix – inklusive eigenem Template

Parallel zum Skript haben wir ein Zabbix-Template entwickelt, das die JSON-Ausgabe automatisch interpretiert.
Dieses Template nutzt Low-Level Discovery (LLD), um dynamisch alle erkannten NTP-Peers als einzelne Monitoring-Elemente abzubilden. Für jeden Peer wird der aktuelle Offset als Messwert erhoben und grafisch dargestellt.

Darüber hinaus prüft das Template:

  • ob der Zeitdienst aktiv und korrekt konfiguriert ist,
  • ob das System die passende Synchronisationsquelle nutzt (z. B. NT5DS oder NTP),
  • und ob Kerberos funktionsfähig ist.

Trigger überwachen Schwellenwerte wie Offset > 100 ms (Warnung) oder Offset > 1000 ms (kritisch). So werden Zeitprobleme sofort sichtbar – bevor sie Auswirkungen auf Authentifizierung oder Logging haben.

Durch die Kombination aus Skript und Template entsteht eine vollständige, wiederverwendbare Lösung, die sich problemlos auf beliebige Windows-Systeme ausrollen lässt – vom Domänencontroller bis zum Standalone-Server.


Technische Besonderheiten und Designentscheidungen

Bei der Entwicklung legten wir besonderen Wert auf:

  • Abwärtskompatibilität: Läuft ab PowerShell 3.0 ohne externe Module.
  • Fehlertoleranz: Alle Blöcke sind mit try/catch abgesichert; das Skript liefert stets eine gültige JSON-Ausgabe.
  • Sprachunabhängigkeit: Keine Textvergleiche mit lokalisierter Ausgabe, sondern rein numerische oder strukturierte Werte.
  • Integrationstiefe: Das Template ist so gestaltet, dass es mit minimalem Aufwand importiert und konfiguriert werden kann.

Fazit

Mit dieser Kombination aus eigenem Prüfskript und zugehörigem Zabbix-Template überwachen wir bei der anyWARE AG die Zeitsynchronisation sämtlicher Windows-Systeme zentral, reproduzierbar und sicher.
Zeitabweichungen werden frühzeitig erkannt, und durch die grafische Aufbereitung im Zabbix-Frontend lassen sich Trends und Ausreißer unmittelbar nachvollziehen.

Gerade in sicherheitskritischen Umgebungen ist korrekte Zeit kein Detail, sondern Grundlage für Vertrauen und Funktion.
Unser Ansatz macht diese Kontrolle automatisiert, skalierbar und transparent – ein weiteres Beispiel für die technische Tiefe, mit der wir IT-Services bei anyWARE AG realisieren.