Categories: Linux

Veeam Agent for Linux – mit E-Mail Bericht versehen

Der Windows Agent von Veeam liefert nach dem Backup einen recht netten Bericht mit dem Status der gerade durchgeführten Sicherung:

Selbige Funktion fehlt dem Linux Agent leider, dem kann man zwar durch manuelles Aufrufen der Console ähnliche Daten entlocken – wirklich praktisch ist das allerdings nicht…

Als alter Bash Liebhaber findet sich aber fast immer für jedes Problem eine Lösung, ich habe ein kleines Bash Script gebaut welches die Werte vom letzten Veeam Backup Job ausliest und mittels Template File aufbereitet und per Mail versendet.

Das Ergebnis sieht dann wie folgt aus:

Die Unterschiede sind relativ gering, mit den Daten kann man aber auf jeden Fall was anfangen!

Hier gibt es das kleine Script zum Herunterladen:

https://github.com/grufocom/vee-mail

Ich habe die beiden Datein auf meinem Linux System unter /usr/local/sbin/ abgelegt, der Pfad zur Template Datei ist entpsrechend im Script anzupassen – ebenso wie Absender und Empfänger Mail Adresse und der Name des Backup Jobs.

Man kann das Script als Post-Job Script beim Veeam Job mit angeben, sollte der letzte Job noch nicht fertig sein beendet sich das Script ohne weitere Meldungen.

Fehler werden auch entsprechend farblich gekennzeichnet und mit den Error Meldungen aus dem Logfile versehen:

Mir fehlt im Moment noch eine „Warning“ Mail vom Windows Agent damit ich die auch noch entsprechend anpassen kann, dürfte aber nur eine Frage der Zeit sein.

Ich hoffe ich kann mit dem kleinen Script auch anderen Veeam Nutzern eine Freude bereiten – positives Feedback ist willkommen! 😉

27.09.2017 – Update:

Ein paar kosmetische Änderungen habe ich noch vorgenommen, die Details kommen jetzt mit Zeilenschaltungen daher und nicht mehr in einer Wurst, die Agent Version vom Linux wird mit angegeben und Warnings erscheinen in orange.

2018.01.30 – Update Version 0.4: Nachdem das Script als Post-Script nicht funktionierte (siehe Kommentare) habe ich es ein wenig modifiziert, es forkt sich jetzt selbst und läuft verzögert im Postscript durch. Voraussetzung dass es überhaupt läuft es ein dummy-Pre-Script, ohne dieses kommt es vor dass veeam kein Post Script startet – ein Bug der wohl mit der nächsten Version behoben sein wird. Danke an Jens, Jan und Peter für’s Testen und Bugfixen! 😉

2019.04.25 – Update Version 0.5: Ich habe die Bugfixes der letzten Monate und ein paar Anregungen einfließen lassen und mich entschlossen die Version 0.5 frei zu geben. Die wichtigsten Änderungen in Kürze – Auslagerung der Config-Variablen in eine eigene Datei (veeam_mail.config), damit Updates einfach installiert werden können ohne Anpassung irgendwelcher Werte. Anzeige des Pfades auf welchem die Sicherung zuletzt gesichert wurde. Und eine Funktion die (falls aktiviert – SKIPUPGRADECHECK in der Config Datei) prüft ob eine neue Programmversion existiert und gegebenenfalls im Mail eine Info mit ausgibt.

https://github.com/grufocom/vee-mail

Für die nächste Version hätte ich dann geplant dass ich die Mails am Mailserver per Script auswerte und die Daten in einer Datenbank sammle. Diese sollen dann via PHP Script grafisch aufbereitet werden so dass man auf einer Übersichtsseite sofort alle Sicherungen im Blick hat.

Wie immer freue ich mich auf euer Feedback! 🙂

 

2019.05.07 Update Version 0.5.3: Damit es nicht langweilig wird habe ich das Tool noch ein wenig erweitert – jetzt erscheinen auch lokal gemountete Laufwerke und es wird versucht den benutzten und zur Verfügung stehenden Platz auch mit ins Mail zu packen. Download – siehe oben.

2019.07.23 Update Version 0.5.5: Zwei neue Config Parameter habe ich in der Datei veeam_mail.config hinzugefügt, sie dienen dazu zuverlässige den freien Platz bei CIFS gemounteten Backup Laufwerken zu ermitteln. SMBUSER und SMBPWD, die Datei sollte anschließend mit passenden Rechten versehen werden (chmod 600 veeam_mail.config) weil das Kennwort darin im Klartext angegeben werden muss. Sicher nicht die perfekte Lösung, aber sie funktioniert und jemand der so weit ins System eingedrungen ist dass er hier lesen kann dürfte sowieso schon genügend Schaden anrichten können. Wer eine andere einfach umzusetzende Idee hat – nur her damit!

2020.02.04 Update Version 0.5.9: Neue Config Option „DEBUG=1“ welche beim Aufruf von „veeam_mail.sh –bg“ direkt ein paar Debug Ausgaben liefert. Version 0.5.6 bis 0.5.8 haben ein paar kleine Fehler bei der Darstellung behoben.

2020.02.07 Update Version 0.5.10: Ich habe das Script umbenannt und auf Github angesiedelt, davon verspreche ich mir eine bessere Dokumentation bei Updates und Fehlern. Zu finden auf Github unter https://github.com/grufocom/vee-mail

2023.01.27: Da ich auf meiner Webseite die Dateien entferne (Projekt ja zu Github übersiedelt), habe ich hier die Links entsprechend auf die Projektseite bei Github abgeändert.

Manfred

View Comments

  • Hallo!
    Bei mir bringt sqlite3 diese Fehlermeldung, wenn ich den Select ausführe.

    Error: file is encrypted or is not a database

    Hast du eine Idee dazu?

    Viele Dank!

    • Hallo Marcel,

      welche Version von Veeam hast du installiert?
      Was liefert der Befehl:
      sqlite3 /var/lib/veeam/veeam_db.sqlite "select start_time, end_time, state, progress_details from JobSessions order by start_time DESC limit 1;"

      Wenn du ihn manuell startest?

      Schöne Grüße
      Manfred

  • [root@server /]# sqlite3 /var/lib/veeam/veeam_db.sqlite "select start_time, end_time, state, progress_details from JobSessions order by start_time DESC limit 1;"
    Error: file is encrypted or is not a database

    [root@server /]# veeamconfig -v
    v1.0.1.364

    • Hallo Marcel,

      was liefert dir denn:
      file /var/lib/veeam/veeam_db.sqlite
      bei mir kommt:
      /var/lib/veeam/veeam_db.sqlite: SQLite 3.x database, user version 6

      Ich kann jetzt nicht ausschließen dass veeam gelegentlich die Datenbank verschlüsselt anlegt, wüsste jetzt aber keine Grund dafür - da müsstest du mal bei deren Support anfragen!

      Schöne Grüße
      Manfred

      • Hallo Manfred,

        die Datenbank ist nicht verschlüsselt, die Fehlermeldung ist nur irreführend. Der Fehler tritt bei mir auch auf - aber nur unter Cloudlinux. Mit sqlite3 kann man die DB nicht bearbeiten, was möglicherweise an der Implementierung in CentOS basierten Linuxversionen beruht.

        Unter Debian funktioniert es einwandfrei.

        Grüsse

        Micha
        .

    • Hi Petr,

      you could add that script to the veeam job under advanced as post-job!
      So it will be executed after the backup job has run.

  • Super Script! Danke dafür!
    Habe Zeile 39 so angepasst, dass auch bei erfolgreichen Jobs das Skript sofort aussteigt. Identisch zu laufenden Skripten.
    Somit bekomme ich nur eine Meldung wenn es einen Warning oder einen Fehler gab. Das hält den Blick scharf :-)

    • Hallo Tobias,

      ich habe mit Absicht die Meldung im Erfolgsfall aktiv gelassen damit ich sehe dass das Backup auch wirklich läuft. Mal angenommen es wird nicht gestartet, dann sieht man auch keine Fehler oder Warnmeldung in seinem Postfach - mit auskommentierter Erfolgsmeldung würde das dann dem Status gleich kommen den man hat wenn das Backup funktionierend durchgelaufen ist.

      Aus meiner Sicht daher eher kontraproduktiv! :-)

      Schöne Grüße
      Manfred

  • Toll, vielen Dank!

    In der aktuellen Version v2.0.0.400 des Veeam Agent gibt es in der veeamconfig-Ausgabe am Ende eine weitere Zeile mit der Anzahl der Sessions. Damit das abgefangen wird:

    Zeile 27:
    SESSID=$($VC session list|tail -1|awk '{print $3}')

    Ersetzen durch:
    if [ "${AGENT:0:2}" == "v2" ]; then
    SESSID=$($VC session list|tail -2|head -n 1|awk '{print $3}')
    else
    SESSID=$($VC session list|tail -1|awk '{print $3}')
    fi

    • Hallo Karsten,

      vielen Dank für den Hinweis - ich hab's angepasst.
      Ich habe einfach ein "grep -v 'Total amount'" mit eingebaut - das wäre dann versionsunabhängig.

      Schöne Grüße
      Manfred

  • Vielen Dank für das Script, läuft auf Anhieb und erspart die Arbeit nach den Logfiles zu schauen.

    Danke

    • hat evtl. noch jemand das Problem, dass das Script nicht als Postscript im Veeam läuft?
      Erst hatte ich auch Probleme das Script per Cronjob aufzurufen, da gab es den Fehler "sendmail nicht gefunden", das habe ich erfolgreich durch das Ergänzen des kompletten Pfades um Script behoben.
      Mir gelingt es trotzdem nicht das Script als Postscript laufen zu lassen, Fehlermeldungen gibt es keine und es kommt auch keine Mail an. Manuell und per Cronjob läuft alles....

      Grüße Jens

      • Hallo Jens,

        das klingt irgendwie als würden irgendwelche environment Variablen fehlen die benötigt werden.

        Zu dem von dir im Kontaktformular übermittelten Link - das könnte auch ein anderes Problem sein, eventuell fehlende Ausführungsrechte vom Script oder so... Die Frage dort ist eher ob's überhaupt ausgeführt wird oder nicht.

        Schöne Grüße
        Manfred

        • Hallo Manfred,

          ich habe mich jetzt mal ein wenig mit dem Script befasst.
          Als erstes habe ich herausgefunden, dass das Post-Script ausgeführt wird.
          Dann habe ich mir die Variablen angeschaut, hier scheint es ein Problem zu geben, wenn das Script als Post-Script läuft, dann wird nämlich die Variable $STATE immer mit "1" befüllt und damit das Script beendet. Ich denke, es ist damit zu erklären, das das Backup noch nicht beendet ist.

          Lasse ich das Script per Cronjob nach dem Backup laufen funktioniert die Erkennung.

          Grüße Jens

          • Du hast Recht es hängt mit dem STATE zusammen, das Script prüft ja ob noch ein Job läuft weil eigentlich erst nach beendetem Job sicher ist wie er abgelaufen ist! ;-)
            Es ist so also als Post-Script nicht wirklich geeignet, es sei denn veeam beschließt das Post-Script erst zu starten wenn der eigentliche Backup Job schon beendet wurde.

          • Eine Möglichkeit wäre ein Post-Script einzusetzen, welches dein Script aufruft.
            In Deinem Script eine kurze Zeitschleife rein und es sollte funktionieren, weil das Backup dann fertig sein sollte.

          • Die Möglichkeit habe ich mir auch mal überlegt, ganz optimal scheint sie mir aber nicht. :-)
            Ich würde die Verzögerung aber wenn dann in's aufrufende Script einbauen, so in etwa:

            #!/bin/bash

            sleep 5 && echo "OK" &

            exit 0

            Einfach den Scriptaufruf statt echo "OK" rein und schon sollte es 5 Sekunden verzögert starten.

  • Hallo,

    danke für das hilfreiche Script. Es hat bei mir initial einmal funktioniert, danach aber leider nicht mehr.
    Ich hatte den ersten Job nochmal entfernt und einen neuen angelegt, seither klappt etwas nicht mehr. Obwohl das letzte Backup erfolgreich war (https://pasteboard.co/H3WSdQO6.png) kommt das Script zum Ergebnis, das Backup sei noch im Gange:

    > echo $STATE
    1

    Allerdings stimmt die Session-ID auch nicht mir jener überein, die im Log-Ordner auftaucht:

    echo $SESSID
    142b0f01-abab-4de4-b580-ff9f7c2ccd0f

    > ls /var/log/veeam/Backup/Full
    Session_20180121_121415_{3892a52e-41c9-44c5-ba08-5800f6fc740b}

    Ist etwas durcheinander gekommen? Wäre dankbar für einen Hinweis.

    Danke & Gruß
    Jan

    • Hallo Jan,

      ich würde nicht allzu lange suchen und einfach veeam noch einmal deinstallieren, anschließend /etc/veeam und /var/lib/veeam löschen und dann veeam erneut installieren und die Sicherung frisch einrichten.
      Das dürfte vermutlich schneller gehen als den Fehler zu suchen! ;-)

      Schöne Grüße
      Manfred

      • Hallo Manfred,

        Danke für den Hinweis. Du hast recht, mit frischer Konfiguration ist der Output des Script korrekt. Allerdings scheint Veeam Agent for Linux in der aktuellen Version einen Bug zu haben, der dazu führt, dass das Post-Job-Script (in bestimmten Situationen - bei vielen von euch scheint es ja zu klappen) gar nicht ausgeführt wird.

        Hier ist das Problem bereits beschrieben: https://forums.veeam.com/veeam-agent-for-linux-f41/post-job-doesn-t-work-t47878.html

        Ich habe daher einen Fall bei Veeam geöffnet.

        Gruß
        Jan

        • Hallo Jan,

          wie du oben lesen kannst, ist das "Problem" mit dem STATE gelöst.
          Wie ich jetzt aber mehrfach feststellen musste, ist es scheinbar Glückssache ob das post-script vom Veeam überhaupt gestartet wird. Ich habe es mit einem einfachen Script welches das Datum in ein File schreibt getestet. Momentan wird es gar nicht mehr gestartet....
          Es wäre nett, wenn du uns hier auf dem Laufenden halten würdest, bzw. uns einen Link zu dem gemeldeten Fall posten könntest.

          Danke Jens

          • Hallo Jens,

            genau - ich lasse auch zu Beginn ein Datum schreiben und das passiert bei mir nie.

            Der Fall ist bei Veeam nicht öffentlich einsehbar, sondern an meinen Account gebunden. Ich poste aber gerne was, wenn ich eine zielführende Antwort habe.

            Grüße
            Jan

  • Antwort von Veeam (Workaround noch nicht von mir validiert):

    ------------------------
    I've discussed your question, and it seems to be a known issue, which will be fixed in the next update of Veeam Agent.

    As a workaround please create additional dummy "pre-job" script for example:

    #!/bin/bash
    exit 0
    ------------------------

Recent Posts

VM – ZFS Partition online vergrößern

Man macht es nicht jeden Tag, darum schadet es nicht sich's kurz zu notieren... Hier…

9 Monaten ago

Samba Password History für einen User löschen

Meine Suche bei Google hatte mal wieder keinen vernünftigen Treffer gelandet, das Problem - ich…

9 Monaten ago

HP Eine Firma von der ich nicht mal geschenkte Drucker nehmen würde!!!

Ich muss mal eben etwas Druck ablassen, ein Kunde von mir setzt einen Drucker von…

12 Monaten ago

IRMC Console Redirection ohne Lizenz

Wer beim Server bestellen vergessen hat die erweiterte IRMC Lizenz zu ordern, der steht vor…

1 Jahr ago

WOL im BIOS aktivieren reicht nicht immer

Ich nutze seit langer Zeit ein System für meine Backups welches in der Nacht von…

1 Jahr ago

Apache Guacamole mit TOPT – funktioniert nicht

Es scheint wohl eine noch nicht so häufig genutzte Kombination zu sein - Apache Guacamole…

1 Jahr ago