FME Flow
Ablauf
-
FME Flow Token generieren
-
Einrichtung der Python-FME-Jobs
-
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 |
Queue Control |
Manage |
Licensing & Engines |
Manage |
Einrichtung der Python-FME-Jobs
An die Stelle der Logstash-Pipelines aus den Vorversionen ist eine Python-API getreten, die einen performanten, verlässlichen und leicht konfigurierbaren Einsatz ermöglicht. Über diesen Weg 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:
-
Konfigurationsdatei
config.json
anlegen oder Optionen als System-Umgebungsvariablen setzen -
Skript auf der Kommandozeile testen
-
Skript in ausführbare Datei einbetten
-
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
.
{
"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
}
}
}
|
URL zur Elastic-Instanz |
ELASTICSEARCH_URL |
---|---|---|
|
Name des Nutzers |
ELASTICSEARCH_USER |
|
Passwort des Nutzers |
ELASTICSEARCH_PASSWORD |
|
Aktivierung der Hash-Funktion für den Nutzernamen |
ELASTICSEARCH_HASH_USERNAME |
|
Wert der in den Hash des Nutzernamens einfließt |
ELASTICSEARCH_USERNAME_HASH_SALT |
|
URL zu FME Flow |
FME_URL |
|
FME Flow Token |
FME_TOKEN |
|
Label, um die Ereignisse gemäß ihrer Stage zu kennzeichnen |
FME_STAGE |
|
Aktivierung der SSL-Zertifikatsprüfung |
COMMON_VERIFY_SSL_CERT |
|
Sobald eine Proxy-URL angegeben ist, wird der gesamte Datenverkehr über den Proxy geleitet. |
PROXY_URL |
|
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 |
python -m pipelines.fmejob -c /opt/conterra/fme/config.json
#!/bin/sh
python -m pipelines.fmejob -c /opt/conterra/fme/config.json
*/10 * * * * /home/monitor/fme-python/job-run.sh
Konfiguration von Filebeat (Server seitige Logdaten)
Für jeden FME Host, der am Sammeln der Log-Daten beteiligt sein soll, muss die Komponente Filebeat installiert werden. Aktuell wird Filebeat 7.x unterstützt; mit Filebeat 8.x konnten noch keine Probleme festgestellt werden.
Die Filebeat-Konfiguration erfolgt danach auf Basis der Vorlage filebeat/fme-logfile/filebeat.yml
.
# fme.base.path: '/var/log/fme'
fme.base.path: ''
# The value of this option will be added to the "labels.env" field in the index.
fme.env: 'production'
filebeat.inputs:
- type: "filestream"
id: "fme_server_core"
enabled: true
fields_under_root: true
fields:
labels:
env: ${fme.env}
source: "fme_server_core"
pipeline: "ct-monitor-fme-log"
paths:
- "${fme.base.path}/logs/core/current/*.log"
parsers:
- multiline:
type: "pattern"
pattern: '^(\w{3}-\d{2}-\w{3}-\d{4} \d{2}:\d{2}:\d{2}.\d{3})\s((AM|PM)+)'
negate: true
match: "after"
skip_newline: true
[... more inputs ...]
# ======================= Elasticsearch template setting =======================
setup.ilm:
enabled: true # setting this to true will ignore setup.template.name, setup.template.pattern and output.elasticsearch index
policy_name: "ct-fme-log-policy"
overwrite: false
rollover_alias: "ct-fme-log"
pattern: "{now/d}-0000001"
# This section is ignored, when setup.ilm.enabled is true
# setup.template.name: "ct-fme-log"
# setup.template.pattern: "ct-fme-log-*"
# ================================== Outputs ===================================
# --------------------------- Elasticsearch Output -----------------------------
output.elasticsearch:
# the index configuration is ignored when setup.ilm.enabled is true. In this case the setup.ilm.rollover_alias is used as target.
# index: "ct-fme-log-*"
# The name of the ingest pipeline processing the filebeat input.
pipeline: "ct-monitor-fme-log"
# Elasticsearch host and port
hosts: ["https://localhost:9200"]
# Elasticsearch user name
username: ""
# Elasticsearch password
password: ""
ssl:
enabled: true
# Elasticsearch SSL fingerprint
ca_trusted_fingerprint: ""
Ü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 .
|
Konfiguration von Filebeat, in Kombination mit ArcgIS Logdateien
Wenn neben FME Logdateien auch ArcGIS Logdateien mit Filebeat eingelesen werden sollen, kann im Ordner filebeat/arcgis-fme-logfile
eine filebeat.yml
-Datei für diesen Zweck genutzt werden.
Diese kombiniert die beiden Pipelines.
Einrichtung der Logstash Pipelines (deprecated, nicht verpflichtend)
Falls sämtliche Logstash-Pipeline-Ordner des service.monitor bereits in Logstash vorliegen, müssen die drei FME-Pipelines über die Datei pipelines.yml
aktiviert werden.
Pipeline konfigurieren
Die FME-Pipelines müssen über das Setzen von Variablen konfiguriert werden, bevor sie erfolgreich in Betrieb genommen werden können.
Variable | Standardwert | Erklärung |
---|---|---|
|
<leer> |
URL des Hosts auf dem FME läuft, inkl. Protokoll, z.B.: |
|
<leer> |
FME Flow Token zur Authentifizierung des Requests bei FME |
|
1000 |
Anzahl der Jobs, die pro Request bei FME Flow abgefragt werden sollen |
|
6h |
Polling-Intervall für FME-Server Jobs |
|
localhost |
Angabe der Adresse von Elasticsearch, z.B. |
|
<leer> |
Benutzername für die Authentifizierung bei Elasticsearch |
|
<leer> |
Passwort für die Authentifizierung bei Elasticsearch |
Die Verwendung der ct-fme-*
-Logstash-Pipelines wird nicht mehr empfohlen.
