FME Server (API v3)

Sie haben folgende Möglichkeiten FME Server zu überwachen.

  • FME Server Health Check

  • FME Server Engines am Server verfügbar

  • FME Server Engines für Jobausführung nutzbar

  • Prüfung auf verspätete FME Server Jobausführung

  • Job-Ausführung-Erfolgscheck von FME Server Schedules

Fast sämtliche FME Server Prüfungen sind eine Kombination aus einem bestimmten Request und der Formulierung von spezifischen Erwartungen, die an den FME Server gemacht werden. Wenn Sie zum Beispiel die Verfügbarkeit von FME Server Engines prüfen möchten, so definieren Sie eine Expectation, wie viele Engines am Server erwartet werden.

Legen Sie zunächst ein Credential-Template für die Authentifizierung der Requests gegen FME Server an.

Health Check

Um einen FME Server Health Check zu überwachen, gehen Sie wie folgt vor.

  1. Registrieren Sie einen neuen Dienst mit folgenden Werten:

    • Benennen Sie den Dienst.

    • Wählen Sie als Typ FME Server (API v3).

    • Geben Sie die HTTP-Adresse des FME Servers an, z.B. https://fmeserver.<myhost>.org.

  2. Legen Sie einen Job für den neu registrierten Dienst an.

    • Benennen Sie den Job.

    • Die Kategorie ist benutzerdefiniert.

    • Wählen Sie Standard request. Dadurch wird der entsprechende Request in das Content-Feld eingefügt.

    • Stellen Sie die Überwachung & Benachrichtigung sowie die Dienstgüte nach Ihren Anforderungen ein.

Engines am Server verfügbar

Um bei einem Ausfall von am Server registrierten Engines benachrichtigt zu werden, definieren Sie eine Expectation.

Die folgende Expectation erwartet zwei Engine-Instanzen am FME Server:

{"type" : "FmeEngineCountExpectation", "content":[2]}
fme engine count

Sie können nun einen weiteren Job anlegen und mit der Standardanfrage Engine Check den korrekten Request auswählen. Wählen Sie anschließend in dem Reiter Dienstgüte die zuvor angelegte Expectation aus.

fme expectation check

Engines für Jobausführung nutzbar

Sie können mit demselben Job und einer zusätzlichen Expectation die verfügbaren Kapazitäten von Server Engines überwachen, welche für den Job zur Verfügung stehen.

Im unteren Beispiel wird erwartet, dass eine Engine zum Prüfzeitpunkt keinen Job ausführt.

{"type" : "FmeEngineAvailableExpectation", "content":[1]}

Verspätete FME Server Jobausführung

Für die Prüfung von verspäteten Jobs — in Ausführung oder in der Warteschlange — verwendet Sie die FmeJobTimeShiftExpectation. Diese erlaubt die Prüfung von beliebigen Zeitinformationen innerhalb eines FME Job-Items in Relation zum aktuellen Zeitpunkt und einer benutzerdefinierten Dauer.

Klicken Sie hier, um ein Beispiel eines FME Job Items aus der Warteschlange zu sehen.
{
	"request": {
		"publishedParameters": [
			{
				"name": "FME_SECURITY_ROLES",
				"raw": "fmeadmin fmesuperuser user:admin"
			},
			{
				"name": "FME_SECURITY_USER",
				"raw": "admin"
			}
		],
		"workspacePath": "\"admin_test/test_workspace_1/test_workspace_1.fmw\"",
		"TMDirectives": {
			"rtc": false,
			"ttc": -1,
			"description": "",
			"tag": "admin_test",
			"priority": -1,
			"ttl": -1
		},
		"NMDirectives": {
			"directives": [],
			"successTopics": [],
			"failureTopics": []
		}
	},
	"workspace": "test_workspace_1.fmw",
	"engineHost": "",
	"timeQueued": "2021-02-18T14:00:00+01:00",
	"description": "",
	"repository": "admin_test",
	"userName": "admin",
	"sourceType": "SCHEDULES",
	"id": 80959,
	"sourceName": "admin_test/create_test_log_2",
	"engineName": "",
	"timeSubmitted": "2021-02-18T14:00:00+01:00",
	"status": "QUEUED"
}

Definieren Sie nun eine Expectation wie unten dargestellt, so wird timeSubmitted mit der Differenz der aktuellen Zeit und der Dauer (hier: eine Stunde) verglichen. Wenn current Time - duration > timeSubmitted — also der Job seit länger als 1 Stunden in der Wartestunde — ist, so werden Sie über diesen Job informiert.

Expectation: Job seit einer Stunde in der Warteschlange
{"type" : "FmeJobTimeShiftExpectation", "content":[{"duration":"PT1H","attribute":"timeSubmitted"}]}
Verwenden Sie timeSubmitted, timeStarted oder timeQueued in Verbindung mit den Standardanfragen Jobs queued und Jobs running, um die gewünschten fachlichen Prüfungen durchzuführen.

Job-Ausführung-Erfolgscheck

Um FME Server Schedules kontinuierlich zu überwachen, bietet sich die FmeScheduleJobExecutionExpectation an. Damit können Sie den Erfolg von unternehmenskritischen FME Schedules überprüfen.

  1. Identifizieren Sie die Kategorie und den Namen des Schedules.

  2. Legen Sie einem neuen Job mit der Beispielanfrage Schedule check an und ergänzen die Kategorie und den Namen für den Request.

  3. Führen Sie den Test request aus und identifizieren Sie die Periodizität des Schedules (z.B. Cron String oder tagesbasierte Ausführung zu definierter Uhrzeit).

  4. Entwerfen Sie auf Basis der Periodizität des Schedules eine Monitoringvorlage, in dessen Rhythmus service.monitor ausgeführt werden soll und für dessen Zeitpunkt erwartet wird, dass eine erfolgreiche FME Jobausführung stattgefunden hat.

  5. Definieren Sie eine FmeScheduleJobExecutionExpectation, die zusätzlich eine Zeitdauer definiert, in dessen Zeitrahmen eine erfolgreiche Ausführung stattgefunden haben muss.

Die unten stehende Abbildung zeigt die erfolgreiche (erwartungsgemäße) Prüfung eines FME Jobs. Die berechnete Referenzzeit — die Differenz von Jobausführung und der in der Expectation hinterlegten Dauer — liegt vor dem Startzeitpunkt der letzten FME Jobausführung.

fme schedule expectation de
{"type" : "FmeScheduleJobExecutionExpectation", "content":[{"duration":"PT10M"}]}

Zur konkreten Ausführungszeit des Jobs wird der Schedule von FME Server abgefragt. service.monitor wird dann auf Basis der Schedule-Informationen einen Request an FME Server erzeugen, der die letzte erfolgreiche Jobausführung dieses Jobs (und dessen Startzeit) abfragt. Aufgrund dieser Information kann entschieden werden, ob ein Erwartungsfehler vorliegt oder nicht.

Also: Ist now - duration > timeStarted so wird eine Meldung ausgelöst.

Duration Format
Die Schreibweise der duration folgt dem ISO 8601 duration format. PT10M bedeutet zum Beispiel eine Zeitdauer von 10 Minuten, PT12H30M5S bedeutet 12 Stunden, 30 Minuten und 5 Sekunden.