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:

In Azure die CloudShell öffnen
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.

Das Deployment starten
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: 

Elasticsearch und Kibana
Observability

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

Ähnliche Beiträge