Elasticsearch/Kibana und Docker Images
Elasticsearch und Kibana gehören zum Open Source ELK Stack und werden bei unseren Kundenprojekten für Speicherung, schnelle Suche und Visualisierung von Daten verwendet. O-Ton Elastic: „Mit dem Elastic Stack können Sie zuverlässig und sicher Daten aus jeder beliebigen Quelle und in jedem beliebigen Format erfassen und anschließend die Daten in Echtzeit durchsuchen, analysieren und visualisieren.“ Wir nutzen den Elastic Stack für QNA Daten unserer Chatbots, EDI-Tracking, Logging und für Applikationen die Daten in Echtzeit auswerten und visualisieren.
Unsere Entwicklungs-Module für Kundenprojekte werden in der Cloud betrieben. Deshalb haben wir einen einfachen Showcase für unsere Kunden erstellt, um die Möglichkeiten des ELK Stacks zu demonstrieren. Es gibt bereits Docker Hub Images die ein schnelles Deployment mit Docker erlauben, leider ist die Konfiguration über Environment-Variablen in Azure Container Instances (ACI) limitiert. Um das Elasticsearch Image für eine Development-Umgebung mit nur einem Knoten auszubringen, wird eine Environment-Variable „discovery.type“ mit dem Wert „single-node“ benötigt. In der Azure-Umgebung werden aber keine Variablennamen mit Sonderzeichen (in diesem Fall ein Punkt) akzeptiert. Auf den original Images aufbauend, wurden die Werte in der Konfiguration für das Docker Image fest hinterlegt und können nun ohne Probleme in Azure verwendet werden.
Das Deployment führt mit wenigen Schritten zu einer kompletten Umgebung und kann sofort verwendet werden.
In Azure die CloudShell öffnen und folgenden Befehl eingeben:
code deploy-aci.yaml
Diese YAML-Datei definiert eine Containergruppe mit den Containern für Elasticsearch und Kibana, einer öffentlichen IP-Adresse und drei exponierten Ports. Die Container werden über das öffentliche Docker Hub Repository der inSyca bereitgestellt.
Die Zeilen unten in den Codeeditor kopieren und anpassen. Folgende Werte müssen durch eigene Werte ersetzt werden:
– YOUR-AZURE-CONTAINERGROUP-NAME (Name der Containergruppe in Azure)
– YOUR-AZURE-DNS-NAME (Name für die URL der Container)
apiVersion: 2018-10-01
location: westeu
name: YOUR-AZURE-CONTAINERGROUP-NAME
properties:
containers:
- name: es-op-eu-00
properties:
image: docker.io/insyca/es-dev-azr:1.0
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 9200
- port: 9300
- name: kb-op-eu-00
properties:
image: docker.io/insyca/kb-dev-azr:1.0
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 5601
osType: Linux
ipAddress:
type: Public
ports:
- protocol: tcp
port: 5601
- protocol: tcp
port: 9200
- protocol: tcp
port: 9300
dnsNameLabel:
YOUR-AZURE-DNS-NAME
tags: null
type: Microsoft.ContainerInstance/containerGroups
Mit <ctrl-s> oder über das Menü die Datei speichern und das Deployment mit folgendem Befehl starten. Der Wert YOUR-RESSOURCEGROUP muss durch den Namen einer vorhandenen Ressourcengruppe in Ihrem Azure Tenant ersetzt werden.
az container create --resource-group YOUR-RESSOURCEGROUP --file deploy-aci.yaml
Das Deployment dauert ein paar Minuten, dann stehen Elasticsearch und Kibana zur Verfügung:
In wenigen Minuten erhält man eine Umgebung für Kundenpräsentationen und/oder Entwickler.
Weiterführende Links:
– Elastic
– Tutorial: Deploy a multi-container group using a YAML file