FME Flow

Übersicht

fme flow

Ablauf

  1. FME Flow Token generieren

  2. Einrichtung der Python-FME-Jobs

  3. Einrichtung von Filebeat für Server-only-Dateien

FME Flow Token generieren

Es ist sinnvoll, in FME Flow ein eigenes Benutzerkonto explizit für die Verbindung mit service.monitor zu erstellen und für diesen Benutzer ein FME-Token zu generieren. Folgende Rechte werden für den Zugriff auf FME bei der Token-Generierung in FME benötigt:

Permission Level

Jobs

Manage

Licensing & Engines

Manage

Queue Control

Manage

Einrichtung der Python-FME-Jobs

Über die Python-API können die FME Flow Jobs, die FME Job Logs und die FME Queues abgefragt werden. Voraussetzung für die Nutzung ist eine Python-3-Umgebung und die Installation von pipelines-<version>-py3-none-any.whl. Siehe dazu README.md im Ordner resources/analytics/python/pipelines.

Danach sollten folgende Schritte erfolgen:

  1. Konfigurationsdatei config.json anlegen oder Optionen als System-Umgebungsvariablen setzen

  2. Skript auf der Kommandozeile testen

  3. Skript in ausführbare Datei einbetten

  4. kontinuierliche Ausführung konfigurieren

Folgende JSON-Struktur zeigt die Konfigurationsmöglichkeiten für den FME Python Client.

Alternativ können die Werte auch als System-Umgebungsvariablen gesetzt werden. Die Namen der Variablen folgen einem Schema, das sich aus dem Pfad der JSON-Struktur ableitet, z.B. ELASTICSEARCH_URL.

Konfiguration FME Python Client
{
  "elasticsearch": {
    "url": "http://elastic.host.example.com:9200",
    "username": "elastic",
    "password": "<elastic_pwd>",
    "job_index": "ct-fme-jobs",
    "log_index": "ct-fme-log",
    "job_route_index": "ct-fme-jobroutes",
    "hash_username": true,
    "username_hash_salt": ""
  },
  "fme": {
    "token": "<token>",
    "url": "http://fme.host.example.com",
    "pagesize": 1000,
    "stage": "test"
  },
  "pipeline": {
    "job_logs": {
      "enabled": true,
      "batch_size": 20
    },
    "common": {
      "verify_ssl_certs": false
    },
    "proxy": {
      "url": "http://proxy-host.example.com",
      "use_forwarding_for_https": false
    }
  }
}

elasticsearch.url

URL zur Elastic-Instanz

ELASTICSEARCH_URL

elasticsearch.user

Name des Nutzers

ELASTICSEARCH_USER

elasticsearch.password

Passwort des Nutzers

ELASTICSEARCH_PASSWORD

elasticsearch.hash_username

Aktivierung der Hash-Funktion für den Nutzernamen

ELASTICSEARCH_HASH_USERNAME

elasticsearch.username_hash_salt

Wert der in den Hash des Nutzernamens einfließt

ELASTICSEARCH_USERNAME_HASH_SALT

fme.url

URL zu FME Flow

FME_URL

fme.token

FME Flow Token

FME_TOKEN

fme.stage

Label, um die Ereignisse gemäß ihrer Stage zu kennzeichnen

FME_STAGE

common.verify_ssl_cert

Aktivierung der SSL-Zertifikatsprüfung

COMMON_VERIFY_SSL_CERT

proxy.url - optional

Sobald eine Proxy-URL angegeben ist, wird der gesamte Datenverkehr über den Proxy geleitet.

PROXY_URL

proxy.use_forwarding_for_https - optional

Entscheidung ob Anfragen an den HTTPS-Proxy weitergeleitet oder ein TLS-Tunnel mithilfe der HTTP-CONNECT-Methode erstellt werden soll. In Standardszenarien muss diese Option nicht verändert werden. Das Forwarding kann beispielsweise genutzt werden, falls der genutzte Proxy die HTTP-CONNECT-Methode nicht unterstützt.

PROXY_USE_FORWARDING_FOR_HTTPS

Test auf der Kommandozeile (Bash)
python -m pipelines.fmejob -c /opt/conterra/fme/config.json
Einbetten des Aufrufs in eine job-run.sh (Bash)
#!/bin/sh
python -m pipelines.fmejob -c /opt/conterra/fme/config.json
Konfiguration als Cron-Job; Ausführung alle 10 Minuten
*/10 * * * * /home/monitor/fme-python/job-run.sh

Konfiguration von Filebeat (Serverseitige Logdaten)

Filebeat muss auf jeden FME Host installiert werden, für den Log-Dateien gesammelt werden sollen.

Die Auslieferung von $service.monitor enthält im Verzeichnis \resources\analytics\elasticsearch\filebeat\fme-logfile eine Filebeat Konfiguration, mit der FME-Logdateien mittels Filebeat in einen Elasticsearch-Index geschrieben werden können. Die Daten werden durch eine referenzierte Ingest-Pipeline transformiert.

Die Konfiguration kann mit weiteren Datenquellen z.B. ArcGIS-Logs kombiniert werden. Ein Beispiel befindet sich im Verzeichnis \resources\analytics\elasticsearch\filebeat\arcgis-fme-logfile.

Über die Variable fme.base.path kann das Basisverzeichnis der Logdaten auf dem FME Host einmalig für alle Inputs definiert werden.
Über die Variable fme.env kann die Umgebung, die eingebunden wird, hinsichtlich ihrer Stage beschrieben werden: z.B. production oder test.