Mit suvi, dem Task-Supervisor von ECMind, ist es möglich Aufgaben zu planen, Hintergrundprozesse dauerhaft am Laufen zu halten und auf Ereignisse zu reagieren. Eine einfache Web-Oberfläche, ideal zu versionierende Konfigurationsdateien und zentrales Logging bringen Struktur in das, was sonst droht, eine ewige Baustelle zu sein.

Anwendungsfälle

In vielen Projekten sind der Windows-Aufgabenplanung oder, unter Linux, der Cron-Daemon die natürlich richtige Wahl, um Aufgaben zu planen. Leider erlebt man dabei aber allzu oft, wo die Grenzen liegen:

  • Zu viele Tasks und es wird schnell unübersichtlich.
  • Die Windows-Aufgabenplanung erlaubt es, Tasks zu exportieren und importieren, was aber umständlich und unflexibel ist.
  • Änderungen würden in komplexen Projekten mit mehreren Beteiligten sehr von einer Änderungsverwaltung (z. B. Git) profitieren.
  • Log-Einträge sind überall im System verteilt.
  • Tasks lassen sich nur umständlich von aussen starten und überwachen.

Hier kann suvi weiterhelfen

  • Eine einfache, Datei-basierte Konfiguration erlaubt es, Tasks zu definieren, die immer am Laufen gehalten werden müssen oder zu bestimmten Zeiten starten sollen.
  • Diese Dateien können einfach zwischen Projekten ausgetauscht und in herkömmlichen Versionsverwaltungssystemen gepflegt werden.
  • Alles ist in einer einfachen Weboberfläche einzusehen, laufenden Tasks, deren Log-Ausgaben sowie alle Ausführungspläne und zugehörige Parameter.
  • Eine einfache Web-API erlaubt es, Tasks im Bedarfsfall zu starten, Ergebnisse und Laufzeitparameter jederzeit auszulesen und die suvi-Leistungsdaten zu überwachen.

Überall einsatzbereit

Als Zielplattform stehen Ihnen Windows (Service) oder Linux (Daemon oder Docker) zur Verfügung. Damit können sowohl klassische DMS- und Archivserver von den praktischen suvi-Funktionen profitieren als auch cloud-native-Umgebungen mit dem benutzerfreundlichen und flexiblen Supervisor ausgestattet werden.

Standards, auf die Sie bauen können

  • Die Konfiguration von Tasks erfolgt in einfachen JSON-Dateien:
{
    "type": "keepalive",
    "exec": "system",
    "args": [
        [ "prestart.exe", "--config-file=example.toml" ],
        [ "mainjob.exe", "/foreground" ]
    ],
    "cwd": "d:/apps/services/example",
    "tokens": ["remote-start-4711"],
    "info": "Dieser Text wird in der Weboberfläche angezeigt und dient der Dokumentation dieses Beispiel-Tasks."
}
  • Tasks, welche regelmässig gestartet werden sollen, können mit einem an crontab angelehnten Syntax (Minute, Stunde, Tag des Monats, Monat, Wochentag) konfiguriert werden.
  • Programmatisch lassen sich Tasks über simple WebHooks starten. Die innere Logik von suvi stellt dabei sicher, dass Tasks nicht mehrfach gleichzeitig gestartet werden.
  • Programmprotokolle aus STDOUT und STDERR stehen im Dateisystem, via Weboberfläche und REST-/JSON-API zur Verfügung.
  • Natürlich kann der Systemstatus über einen Blick auf das Web-Interface von suvi jederzeit eingesehen werden. Die Überwachung gelingt aber besonders einfach durch den Telemetrie-Endpunkt, welcher schnell über seinen bekannten JSON-Syntax anzubinden ist:
{
  "continue": true,
  "now": 1661430275,
  "processes": 1,
  "schedules": 38,
  "startup": 1661411742,
  "tasks": 56,
  "telemetry_1": {
    "cycle": 6,
    "error": 2,
    "scheduled-start": 9,
    "task-added": 10,
    "task-end-beispiel-task-1": 1,
    "task-end-beispiel-task-2": 1,
    "task-end-beispiel-task-3": 1,
    "task-scheduled-beispiel-task-1": 1,
    "task-scheduled-beispiel-task-2": 1,
    "task-scheduled-beispiel-task-3": 1
  },
  "telemetry_5": {
    "cycle": 30,
    "error": 2,
    "scheduled-start": 46,
    "task-added": 51,
    "task-scheduled-beispiel-task-1": 3,
    "task-scheduled-beispiel-task-2": 3,
    "task-scheduled-beispiel-task-3": 3
  },
  "telemetry_15": {
    "cycle": 90,
    "error": 2,
    "scheduled-start": 138,
    "task-added": 15,
    "task-end-beispiel-task-1": 9,
    "task-end-beispiel-task-2": 9,
    "task-end-beispiel-task-3": 9,
    "task-scheduled-beispiel-task-1": 9,
    "task-scheduled-beispiel-task-2": 9,
    "task-scheduled-beispiel-task-3": 9
  },
  "version": "2.2.0"
}

Talend®-Jobs und suvi

Regelmässige auszuführende Talend-Jobs, die beispielsweise auf unseren Talend® Components für enaio® und yuuvis® basieren, profitieren in besonderer Weise von einem Start und der Überwachung durch suvi.

  • suvi kennt neben der Möglichkeit, beliebige Programme auszuführen, auch den Startparameter talend: Als ZIP-Paket exportierte Jobs können dort direkt referenziert werden.
  • Aus Talend® exportierte Jobs können somit von suvi selbstständig entpackt und die zur Laufzeit gültige Version bis zum Ende vorgehalten werden.
  • suvi sorgt so dafür, dass immer die richtigen Abhängigkeiten geladen werden.
  • Im laufenden Betrieb kann auf neue Job-Versionen gewechselt werden, ohne die gerade in Ausführung befindlichen Versionen zu unterbrechen oder mit Dateisystemkonflikten manuell umgehen zu müssen.
  • Kontextvariablen können mitgegeben und somit der selbe Talend-Job in unterschiedlichen Tasks parallel in abweichenden Ausprägungen gestartet werden.