NetApp Uhrzeit und Abweichung monitoren überwachen
Aus znilwiki
Ausgangslage
Bei einem Kunden weigert sich seine NetApp beharrlich die Uhrzeit mit einem der Zeitserver abzugleichen.
Weicht die lokale Zeit der NetApp aber zu sehr von der Zeit in der Windowsdomäne ab ist kein Zugriff mehr auf die Cifs-Freigaben möglich das die Authentifizierung fehlschlägt - ich meine mich zu Erinnern das es nicht mehr als 15 Minuten Abweichung sein dürfen.
Bis der Support das Problem mit dem Zeitserver gelöst hat sollte zumindest die Abweichung der Zeit überwacht werden um ggf. Rechtzeitig von Hand gegenzusteuern.
Das Skript
Der Test wird vom Zabbix-Server aus durchgeführt. Als Voraussetzung muss sshpass installiert sein:
apt-get install sshpass
und das Skript (richtigen Pfad für eure Installation wählen!):
nano /share/zabbix/externalscripts/netapptime.sh
oder(!)
nano /usr/local/share/zabbix/externalscripts/netapptime.sh
#!/bin/bash
tempvar1=`sshpass -pPASSWORT ssh -o UserKnownHostsFile=/tausch/netapp -o StrictHostKeyChecking=no admin\@192.168.254.7 'date' | grep Europe 2>/dev/null`
echo "NetApp Zeit: $tempvar1"
netapptime=`echo $tempvar1 | cut -d':' -f2`
echo "Netapp Minuten: $netapptime"
localtime=`date | cut -d':' -f2`
echo "Lokale Minuten: $localtime"
echo "Differenz: $(( $netapptime - $localtime ))"
/usr/local/bin/zabbix_sender -z 127.0.0.1 -s NetApp -k znil.netapp.timedifference -o $(( $netapptime - $localtime ))
Ein etwas schmutziges Skript, anpassen müsst Ihr folgende Textstellen:
-pPASSWORT : Das Passwort für den admin Benutzer (mit dem -p davor) /tausch/netapp : In der Datei legt er beim erste
n mal den host verification key ab - das muss so sein damit ab dem 2. mal der grep funktioniert.
Also bitte einen gültigen Pfad (nicht den /tmp Ordner nehmen) 192.168.254.7 : Die IP-Adresse eurer NetApp, und zwar die IP des Cluster Management - ggf. von Hand testen ob Ihr euch per sshanmelden und den Befehl date ausführen könnt /usr/bin/zabbix_sender : Pfad zum Zabbix-Sender Datei -s NetApp : Name des Hosts in Zabbix
Macht das Skript ausführbar:
chmod 755 /share/zabbix/externalscripts/netapptime.sh
und testet es - es wird erst beim 2. Aufruf richtig funktionieren da beim ersten mal der Grep nicht richtig klappt (wegen der Meldung das der Host-Key hinzugefügt wird).
Beispielausgabe:
NetApp Zeit: Mon Apr 23 11:34:53 2018 Europe/Berlin Netapp Minuten: 34 Lokale Minuten: 34 Differenz: 0 info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000030" sent: 1; skipped: 0; total: 1
Das Skript "greift" sich die Minuten und vergleicht diese mit dem lokalen Minuten des Servers. Die Abweichung wird an den Zabbix-Server gesendet.
Das Item
Name : NetApp Zeitabweichung Type : Zabbix trapper Key : znil.netapp.timedifference Type : Numeric (float) Units: s
Das Preprocessing:
Somit zeigt uns Zabbix den Wert in Stunden/Minuten/Sekunden an.
Nun führt zum Testen das Skript noch einmal aus und schaut ob der Wert beim Host landet. Das Skript sollte am Ende ein< br>
info from server: "processed: 1; failed: 0; total: 1; seconds spent: 0.000030"
ausgeben (kein failed)
Der Trigger
Dieser meldet euch nach Belieben die Abweichung nach oben oder unten. Der Wert wird in Sekunden umgewandelt, deshalb müsst Ihr auch auf eine Abweichung in Sekunden prüfen, hier sind es 5 Minuten. (240 sind 4 Minuten, der Wert wird aber immer nur in 60 Sekunden Schritten springen):
Der Cronjob
Wenn das Skript den Wert wie gewünscht sendet legt Ihr einen CronJob auf dem Zabbix-Server an:
crontab -e
und folgende Zeile anhängen:
30 * * * * /share/zabbix/externalscripts/netapptime.sh
Den Pfad ggf. wieder anpassen.
Der Job wird immer zu jeder halben Stunde ausgeführt. 24 mal am Tag sollte reichen und mit der Ausführung zur 30. Minute gibt es kein Problem bei dem Errechnen der Differenz selbst bei größeren Abweichungen.