Lange angekündigt passiert nun was beim Thema Server-Eye und Drive Snapshot (bitte auch die Kommentare beachten). Patrick Schmidt vom Server-Eye Team hat mir ein kleines Skript zukommen lassen, das den Errorlevel von Drive Snapshot auswertet und je nach Ergebnis einen entsprechenden Eintrag ins Ereignisprotokoll schreibt:
setlocal enableextensions enabledelayedexpansion set eventtext= for /f "delims=" %%l in ( %LogDir%\Current.log ) do set eventtext=!eventtext!%%l set _event_filtered=%eventtext:~0,5000% if %errorlevel% == 0 ( eventcreate /id 100 /l application /t INFORMATION /so "DriveSnapshotAgent" /d "%_event_filtered%" ) else ( eventcreate /id 100 /l application /t ERROR /so "DriveSnapshotAgent" /d "%_event_filtered%" )
Dieser Code muss nach jedem “snapshot.exe…”-Aufruf eingefügt werden.
Der Gedanke oder Plan ist, dann letztlich die Einträge im Ereignisprotokoll auszuwerten. Ich persönlich finde die Idee gut, da so die Möglichkeit besteht, das jeder sein Skript entsprechend leicht anpassen kann. Eine Idee von mir ist, den Server-Eye-Code als eigenes Batch-Skript zu hinterlegen und bestehende Skripte einfach durch ein “call server-eye.cmd” nach jedem “snapshot.exe”-Aufruf zu erweitern.
Ein kosmetisches Problem besteht aktuell noch darin, das der Protokollauszug ohne Zeilenumbruch in den Ereignisprotokolleintrag “wandert” und damit entsprechend aussieht:
Falls jemand eine Lösung zu den Zeilenumbrüchen hat, bitte melden.
Das Ganze befindet sich noch in der Entwicklung. Feedback ist natürlich willkommen. Eine Überlegung die noch angestellt wird ist, z.B. nicht den Errorlevel direkt auszuwerten sondern, wie bei meinem Rotations-Skript eine eigene Fehler-Variable zu verwenden. Hintergrund ist, das beim Sichern von vielen Laufwerken sonst recht häufige Einträge zusammenkommen.
Was meint ihr zu dem Thema? Ideen, Vorschläge, Verschlimmbesserungen?
Update 06.07.2016 – 08:49 Uhr
Wer das Rotationsskript in v3.1 einsetzt, kann dieses leicht erweitern, ohne dabei die gewohnte Funktionalität zu verlieren:
Zeile 68: “goto email” durch “goto eventlog” ersetzen.
Vor dem E-Mail-Block (“rem E-Mail”) folgenden Code einfügen:
rem Ereignisprotokoll-Eintrag :eventlog setlocal enableextensions enabledelayedexpansion set eventtext= for /f "delims=" %%l in (%LogDir%\Current.log) do set eventtext=!eventtext!%%l set eventtext_cut=!eventtext:~0,5000! if %error%==false ( eventcreate /id 100 /l application /t information /so "DriveSnapshotAgent" /d "%eventtext_cut%" ) else ( eventcreate /id 100 /l application /t error /so "DriveSnapshotAgent" /d "%eventtext_cut%" ) setlocal disableextensions disabledelayedexpansion endlocal
Nicht wundern: Eine Variable wurde gegenüber dem Original-Server-Eye-Code umbenannt (“_event_filtered” -> “eventtext_cut”), das ist aber nur Kosmetik. Ferner wurde bei “set eventtext_cut” die 5-Zeichen durch ! ersetzt. Mit % gab es immer wieder Probleme, quasi Blinkerprinzip, mal ging’s, mal nicht.
In der jetzt dargestellten Form lief das Skript gestern sowohl manuell (Vollsicherung) als auch per Aufgabe (Differentielle Sicherung). Sobald der finale Weg bei Server-Eye feststeht, werde ich eine neue Version des Rotationssicherungs-Skripts veröffentlichen.
Update 06.07.2016 – 21:56 Uhr
Eine weitere Variante die man realisieren könnte wäre, das im Erfolgsfall nur ein “Backup erfolgreich” ins Ereignisprotokoll geschrieben wird und im Fehlerfall der Inhalt der “snapshot_error.log”. Letztere wird nur im Fehlerfall automatisch und unabhängig vom, sofern überhaupt verwendet, Protokoll erstellt.
Zum Thema “Zeilenumbruch” kam der Vorschlag von Patrick Schmidt, das man alternativ ein anderes Trennzeichen verwendet:
for /f "delims=" %%l in (%LogDir%\Current.log) do ( set eventtext=!eventtext!%%%l___ )
Update 13.09.2016
Der neue Sensor ist in der Mache. Anbei noch eine wichtige Info zum Errorlevel:
Drive Snapshot, VSS und der Errorlevel
Update 06.10.2016
Wie man im aktuellen Changelog (Server-Eye Changelog Quartal 3/2016) nachlesen kann, befindet sich der neue Sensor im Beta-Stadium und kann nun von allen getestet werden.
Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen.
einige fortschritt mit “Zeilenumbruch”?
Nein, es ist beim letzten Stand geblieben, da bisland niemand eine Lösung finden konnte.
In C++ kann man Zeilen umbrechen, indem man ein tippt und dann die Zeilenumbruchtaste, sprich Gullasch Topf.
Ansonsten mit /n << html / bash / php usw.
Hoffe hilft? 😉
Hallo Daniel,
guter Gedanke, funktioniert leider beides nicht.
Kleine Ergänzung noch: Wenn man eine Log-Datei hat, in der VOR Snapshot viele Sachen geschrieben werden (z. B. Anhalten von VMs, Umkopieren usw.), in diese Datei auch Snapshot seine Einträge machen lässt und das dann via obigem Script ins Ereignisprotokoll zu übernehmen versucht, schlägt die Aktion eventuell fehl – ich mutmaße mal, dass der generierte “eventtext” in diesem Fall eine bestimmte Größe überschreitet.
Beholfen habe ich mir, indem statt der DS-Ausgabe einfach nur ein kurzes “Backup OK” oder “Backup mit Fehler!” eingetragen wird – man muss dann im Zweifel Remote nachsehen, wo es konkret gehakt hat. Eine andere Lösung wäre natürlich, für die restlichen Vorgänge ums Backup eine eigene Log-Datei zu erstellen und sich an dieser Stelle auf die DS-Ausgabe zu beschränken.
Erwähnen wollte ich das dennoch, denn wir haben eine Weile gesucht, um herauszufinden, warum der eventcreate-Befehl bei einigen Kunden nicht ausgeführt wurde. 🙂