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-name | Name des Skripts |
ntp-reference-ip | IP-Adresse des Referenz-NTP-Servers |
ntp-reference-port | Port des Referenz-NTP-Servers |
ntp-port | Port des überwachten NTP-Servers |
maxTimediff | Maximale 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.