Server-Eye, Drive Snapshot und Einträge ins Ereignisprotokoll – Ideen und Umfrage

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:

DSAgent_Event01Falls 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___
)
“___” wäre dann das Trennzeichen, ist zwar kein Zeilenumbruch, macht die Sache aber schon übersichtlicher.

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.

5 Kommentare

  1. edwin

    einige fortschritt mit “Zeilenumbruch”?

  2. andy

    Nein, es ist beim letzten Stand geblieben, da bisland niemand eine Lösung finden konnte.

  3. Daniel

    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? 😉

  4. andy

    Hallo Daniel,

    guter Gedanke, funktioniert leider beides nicht.

  5. Bastler

    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. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

© 2024 Andy's Blog

Theme von Anders NorénHoch ↑