OpenNMS: Erweitertes NTP-Monitoring

In den meisten IT-Umgebungen muss darauf geachtet werden, auf allen Geräten die richtige Systemzeit zu verwenden. Das gilt vor allem dann, wenn Ereignisse über mehrere Geräte hinweg in Logfiles analysiert werden sollen; zusätzlich sind aber auch verschiedene Anwendungen auf die korrekt eingestellte Uhrzeit angewiesen. Für die Synchronisation der Uhrzeit mit einem Zeitserver wird in der Regel auf das Network Time Protocol – kurz NTP – zurückgegegriffen. OpenNMS bietet mit dem NtpMonitor bereits einen einfachen Poller, um NTP-Zeitserver zu überwachen. Damit wird die Zeit in regelmäßigen Intervallen von einem NTP-Server abgefragt. Solange OpenNMS dabei eine Antwort erhält, wird kein Ausfall angezeigt – dabei wird jedoch nicht die tatsächliche Uhrzeit überprüft.
Im Rahmen eines Kundenprojektes haben wir einen erweiterten Poller für NTP entwickelt, der die Uhrzeit sowohl von einem überwachten NTP-Server als auch von einem konfigurierten Referenz-NTP-Server abfragt und dabei die gemeldeten Uhrzeiten vergleicht. Weichen diese um einen bestimmten (konfigurierbaren) Wert voneinander ab, wird in OpenNMS ein Ausfall generiert. Der Poller selbst ist als BSF-Monitor implementiert.
Für die Einrichtung des Monitors muss das folgende Skript „ntp-monitor.bsh“ (Download: ntp-monitor.zip) auf dem OpenNMS-Server hinterlegt werden. Der nachfolgende Abschnitt muss in der poller-configuration.xml eingetragen werden:

<service name=“NTP-Diff“ interval=“300000″ user-defined=“false“ status=“on“>
<parameter key=“file-name“ value=“/etc/opennms/scripts/ntp-monitor.bsh“/>
<parameter key=“lang-class“ value=“beanshell“/>
<parameter key=“bsf-engine“ value=“bsh.util.BeanShellBSFEngine“/>
<parameter key=“file-extensions“ value=“bsh“/>
<parameter key=“maxTimediff“ value=“10″/>
<parameter key=“ntp-port“ value=“123″/>
<parameter key=“ntp-reference-ip“ value=“10.0.0.1″/>
<parameter key=“ntp-reference-port“ value=“123″/>
</service>
<monitor service=“NTP-Diff“ class-name=“org.opennms.netmgt.poller.monitors.BSFMonitor“ />

Die folgenden Parameter müssen dabei angepasst werden:

file-nameName des Skripts
ntp-reference-ipIP-Adresse des Referenz-NTP-Servers
ntp-reference-portPort des Referenz-NTP-Servers
ntp-portPort des überwachten NTP-Servers
maxTimediffMaximale Differenz der von den NTP-Servern abgefragten Zeiten in Sekunden

 
In der aktuellen Version des Pollers werden die beiden NTP-Server nacheinander abgefragt. Dabei wird jeweils fünf Sekunden lang auf eine Antwort gewartet. Die abgefragten Zeiten können sich daher um diese Zeitspanne unterscheiden. Aus diesem Grund sollte man den Wert „maxTimediff“ nicht kleiner als fünf Sekunden wählen.

EU Efre Dekra