Elasticsearch Stack per Python vorbereiten

Die Einrichtung von Indizes, Templates, Ingest-Pipelines, Index Lifecycle Policies und Dashboard-Objekten erfolgt am besten über die mitgelieferten Python-Skripte, weil ein Großteil des manuellen Aufwandes eingespart werden kann.

Python-Umgebung und Wheel-Package

Die Skripte werden als Wheel-Dateien bereitgestellt und müssen einer lokalen Python 3-Umgebung zur Verfügung gestellt werden. Der Installationsort von Elastic muss aus Sicht der Python-Skripte per HTTP erreichbar sein. Eine detaillierte Beschreibung der Vorgehensweise befindet sich in resources/analytics/python/monitor_setup/README.md.

Konfiguration der Parameter

Nachdem die Python- und die Elasticsearch-Umgebungen einsatzbereit sind, muss das Skript mit den notwendigen Parametern konfiguriert werden. Dies kann über eine JSON-Datei mit folgender Struktur erfolgen.

Alternativ können die Werte für common, elasticsearch, kibana und proxy auch als Systemumgebungsvariablen gesetzt werden. Die Namen folgen einem Schema, das sich aus dem Pfad der JSON-Struktur ableitet, z.B. ELASTICSEARCH_URL.

Konfigurationsdatei für die Elastic-service.monitor-Einrichtung
{
  "common": {
    "local_imports_dir": "<PATH TO resources/analytics/elasticsearch>",
    "overwrite_objects": false
  },
  "elasticsearch": {
    "url": "http://elastic-host.example.com:9200",
    "username": "elastic",
    "password": "<elastic_pwd>"
  },
  "kibana": {
    "url": "http://kibana-host.example.com:5601"
  },
  "proxy": {
    "url": "http://proxy-host.example.com",
    "use_forwarding_for_https": false
  },
  "spaces": {
    "default": {
      "id": "ct-monitor-test",
      "name": "service.monitor",
      "description": "con terra service.monitor - monitoring, operations, analytics",
      "color": "#ffffff",
      "initials": "CT",
      "imageUrl": "data:image/png;base64,iVBORw0KG....."
    },
    "FME": {
      "id": "ct-monitor",
      "name": "service.monitor for FME",
      "description": "con terra service.monitor for FME",
      "color": "#ffffff",
      "initials": "CT",
      "imageUrl": "data:image/png;base64,iVBORw0KG....."
    }
  }
}

common.local_imports_dir

Pfad zu den Konfigurationsdateien

COMMON_LOCAL_IMPORTS_DIR

common.overwrite_objects

Wenn dieses Flag auf true gesetzt ist, werden bereits vorhandenen Objekte in Elastic und Kibana überschrieben. Andernfalls werden nur neue Objekte hinzugefügt.

COMMON_OVERWRITE_OBJECTS

elasticsearch.url

URL zur Elasticsearch-Instanz

ELASTICSEARCH_URL

elasticsearch.user

Name des Benutzers

ELASTICSEARCH_USER

elasticsearch.password

Passwort des Benutzers

ELASTICSEARCH_PASSWORD

kibana.url

URL zu Kibana

KIBANA_URL

proxy.url (optional)

URL zu einem Proxy-Server, falls dieser für den Zugriff auf Elasticsearch notwendig ist. 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

Das Skript liest die in der Installation vorliegenden Konfigurationsdateien (local_imports_dir) und sendet diese zu Elasticsearch und Kibana.

Ausführen des Skriptes

Das Python-Skript kann dann über die Kommandozeile in der Python-Umgebung ausgeführt werden. Sollen nur die Objekte installiert werden, die für eine Einbindung von FME Flow relevant sind, so wird zusätzlich der Parameter t verwendet.

Kommandozeilenaufruf des Python-Skriptes
python -m monitor_setup -c C:\data\config.json -a full
Kommandozeilenaufruf des Python-Skriptes für FME only
python -m monitor_setup -c C:\data\config.json -a full -t FME

Die Kommandozeilenausgabe informiert dann über den Erfolg der Ausführung.