Der BLOG zum Thema IT, Technik und Geld

Elastic Stack (ELK) Installation und Einrichtung – ELK Stack

Der Elastic Stack (auch unter ELK Stack bekannt), ist eine Ansammlung von Services des Unternehmens elastic zum zentralen Sammeln und Auswerten von Log Daten.

Ich beschäftige mich in letzter zeit häufig mit diesem Thema.
Daher möchte ich hier eine kurze Anleitung liefern, wie man einen solchen Server für Testzwecke einrichtet.

Um einen Zentralen Logging Server zu betreiben, benötigt man mehrere Komponente von elastic.
Von einem Elastik Stack spricht man, wenn alle Komponenten auf einem Server laufen.
Dieser Elastic Stack Server stellt alle notwendigen Services zur Sammlung, Filterung und Auswertung von Log Daten bereit.

Die Services bestehen aus:

  • Kibana = Eine Web Übersicht mit eigens zu erstellenden Dashboards mit Graphen und Tabellen.
  • Logstash = Empfängt die Logeinträge und Filtert diese, danach werden diese zur ElasticSearch DB weitergeleitet.
  • ElasticSearch =  Suchmaschinen DB mit der sich der Datenbestand durchsuchen und analysieren lässt.
  • Beats = Agent Service auf den zu überwachenden Clients. Überträgt z.B. Log Files zu Logstash.

Neben diesen Services gibt es z.B. WinLogBeat – zum erfassen von Windows Logs oder PacketBeat zur Netzwerkanalyse.
Diese Services werden bei elastic alle unter dem namen Beats vertrieben.

elk stack

Die Daten vom Client(z.B. der Filebeat Agent) werden über einen gesonderten Port(5000), verschlüsselt mittels eines x509 Zertifikats an den Logging Server übertragen.

Zusätzlich gibt es noch das X-Pack, welches die Services um Funktionen wie Authentifizierung und Export von Berichten erweitert.

Achtung! Das X-Pack benötigt eine Lizenz von elastic. Wir werden es hier jedoch zu Testzwecken gleich mit installieren.
Die Verschlüsselung der Übertragung mittels x509 wird in diesem Artikel nicht durchgeführt.

Grundeinrichtung

Zuerst wird ein neuer Linux Server eingerichtet.
Ich habe mir hierfür eine kleine VM in VirtualBOX erstellt und mich für ein Debian Linux entschieden.

Elastic Stack VM
Als Hostname habe ich „ELK1“ gewählt und ihm eine feste IP gegeben(192.168.0.20)
Zusätzlich habe ich noch den „nano“ Editor installiert. Ihr könnt aber jeden beliebigen Editor nutzen.

Zuerst muss für Logstash Version 5.x noch Java 8 mit folgendem Befehl auf dem System installiert werden

sudo apt install openjdk-8-jre-headless

Die Grundinstallation des Betriebssystems ist hiermit abgeschlossen.

Offiziell wird zur Installation der Elastic Komponenten folgende Reihenfolge empfohlen

  1. Elasticsearch
  2. X-Pack für Elastic Search
  3. Kibana
  4. X-Pack für Kibana
  5. Logstash
  6. Beat Agents

Diese Reihenfolge werden wir in diesem Tutorial auch für den Elastic Stack beibehalten.

1. Elastic Search Installation

Ich beschreibe hier in kurzen Sätzen die Installation der Komponenten nach Vorgaben von Elastic.

  1. Damit alle Elastic Pakete über Apt-Get Installiert werden können, muss deren Public Key hinterlegt werden(das „-“ am ende des Commands nicht vergessen!)
    Ebenso muss für APT nocht der HTTPS Transport aktiviert werden und das Elastic Repository hinterlegt werden.

    wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    sudo apt-get install apt-transport-https
    echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
  2. Elastic Search installieren
    sudo apt-get update && sudo apt-get install elasticsearch
  3. Elastic Search zum Autostart hinzufügen und starten

    sudo /bin/systemctl daemon-reload
    sudo /bin/systemctl enable elasticsearch.service
    sudo systemctl start elasticsearch.service

Nach der Installation werden automatisch die Config, Home und Data Folder erstellt.

  • Config folder: /etc/elasticsearch
  • Home Folder: /usr/share/elasticsearch
  • Data Folder: /var/lib/elasticsearch

Die Konfiguration von elastic Search findet unter /etc/elasticsearch/elasticsearch.yml statt.
Hier wurde die Host IP und zusätzliche Anpassungen für das Elastic X-Pack hinterlegt.
Einfach am Anfang der Datei einfügen, der Rest kann als Hilfe drin bleiben oder entfernt werden.

path:
 logs: /var/log/elasticsearch
node.name: ${HOSTNAME}
network.host: 192.168.0.20
http.port: 9200
 
#anpassung für x-pack
action.auto_create_index: .security,.monitoring*,.watches,.triggered_watches,.watcher-history*

2. X-Pack Installation für Elastic Search

Ins Verzeichnis /usr/share/elasticsearch/ wechseln und folgendes Kommando ausführen.

bin/elasticsearch-plugin install x-pack

3. Kibana Installation

Kibana wird genauso wie Elastic Search über den Apt Paketdienst installiert

sudo apt-get update && sudo apt-get install kibana

Auch hier wird der Service wieder zum Autostart hinzugefügt und direkt gestartet

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable kibana.service
sudo systemctl start kibana.service

Auch hier werden automatisch wieder die Home, Config und Data Ordner erstellt.

Die Konfiguration findet unter /etc/kibana/kibana.yml statt
Hier wurde die URL des Elasticsearch Servers hinterlegt.

Laut offizieller Dokumentation soll man nicht die Lokalhost Adresse angeben, auch wenn der Dienst auf dem gleichen Elastic Stack Server läuft.

server.host: "192.168.0.20"
server.port: 5601
server.name: "ELK1"
elasticsearch.url: "http://192.168.0.20:9200"
kibana.index: ".kibana"

4. X-Pack Installation für Kibana

Ins Verzeichnis /usr/share/kibana/ wechseln und folgendes Kommando ausführen.

bin/kibana-plugin install x-pack

Ab jetzt sollte der Zugriff auf das Webinterface von Kibana mittels Login möglich sein.
Default Username: elastic
Default PW: changeme

Kibana Interface elastic Stack

Bei mir gab es hier beim Aufruf des Kibana Interfaces über http://192.168.0.20:5601/ einen Redirect Fehler.
Auch ein Neustart aller Dienste half nicht. Erst nachdem ich die Linux VM neu gestartet hatte, ging der Zugriff.

Im Kibana Interface wird, nachdem wir die ersten Logs eingelesen haben, der „logstash-*“ Index erstellt

5. Logstash Installation

Auch bei Logstash findet die Installation über den Apt Paketmanager statt

sudo apt-get update && sudo apt-get install logstash

Auch hier wird der Service wieder zum Autostart hinzugefügt und direkt gestartet

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable logstash.service

sudo systemctl start logstash.service

Ebenso werden auch hier automatisch wieder die Home, Config und Data Ordner erstellt.
Die Konfiguration des Service findet unter /etc/logstash/logstash.yml statt
Hier habe ich keine Änderungen vorgenommen

Die eigentliche Einrichtung der Filter als auch der Ports über die Logstash erreichbar ist, wird über den Ordner /etc/logstash/conf.d/* durchgeführt.
Hier werden die Filter Conf Dateien hinterlegt.

Für den ersten Test habe ich hier mal eine simple Windows LogBeat Filterdatei mit dem namen logstash-simple.conf erstellt

Hier wurde die lokale Host-Adresse und der Logstash Port als Input hinterlegt.
Und es wurde als Output der Elasticsearch Service hinterlegt.

input {
 beats {
 host => "192.168.0.20"
 port => "5043"
 }
}
output {
 elasticsearch {
 hosts => ["192.168.0.20:9200"]
 user => elastic
 password => changeme
 }
}

Mittels des folgenden Kommandos kann geprüft werden ob die config funktioniert und ob der port geöffnet wird.
Ins Verzeichnis /usr/share/logstash wechseln und folgendes ausführen:

bin/logstash -f /etc/logstash/conf.d/logstash-simple.conf --config.reload.automatic

Hiernach müsste sich der Port 5043 öffen. Zum testen kann man hier dann eine Telnet Verbindung dorthin aufbauen.
Hat dies funktioniert kann man den Test Modus mittels STG+C beenden und den Logstash Service neu starten

sudo systemctl restart logstash 

Die Installation des Elastic Stack ist hiermit abgeschlossen.

6. Windows Beats Agent Installation(Winlogbeat)

Der Winlogbeat Agent kann unter: https://www.elastic.co/downloads/beats/winlogbeat heruntergeladen werden.
Das Zip File nach C:\Programme\Winlogbeat-‚version‘ entpacken.
Hier die install-service-winlogbeat.ps1 Datei in Powershell ausführen.

Jetzt sollte in den Windows Diensten ein neuer Service namens „winlogbeat“ erscheinen.
Zum Konfigurieren wird die Datei „winlogbeat.yml“ im Programmfolder bearbeitet.

Hier habe ich zum testen alle Windows Events als input eingetragen und übergebe das ganze an Logstash.
Ebenso habe ich das lokale Logging aktiviert um z.B. Verbindungsprobleme zu sehen.

winlogbeat.event_logs:
 - name: Application
 - name: Security
 - name: System
 
 
output.logstash:
 enabled: true
 hosts: ["192.168.0.20:5043"]
 index: "winlogbeat"
 
 
 logging.to_files: true
logging.files:
 path: C:/ProgramData/winlogbeat/Logs
logging.level: info

Nun kann der Windows Dienst gestartet werden.
Mit folgendem Kommando wird nun noch ein Windows Log Eintrag erzeugt:

eventcreate /ID 1 /L APPLICATION /T INFORMATION  /SO MYEVENTSOURCE /D "My first log"

Nun kann in der Log Datei unter C:\ProgramData\winlogbeat\Logs geprüft werden ob die Übertragung funktioniert hat.
Es sollte die Meldung „Successfully published 1 events“ im Log zu finden sein.

Genau so kann auch Filebeat unter Windows installiert werden.

Um Filebeat zu nutzen musste zusätzlich, einmalig folgendes Kommando ausgeführt werden, um das Filebeat Template in Logstash zu laden

Invoke-WebRequest -Method Put -InFile filebeat.template.json -Uri http://192.168.0.20:9200/_template/filebeat?pretty 

In der Filebeat.yml Datei am Beat Client wurden zum einlesen von Logdateien folgende Angaben in der Datei gemacht

#=========================== Filebeat prospectors =============================
 
filebeat.prospectors:
 
- input_type: log
 - C:\Logs\*
 
 
#================================ Outputs =====================================
 
#----------------------------- Logstash output --------------------------------
output.logstash:
 # The Logstash hosts
 hosts: ["192.168.0.20:5043"]

Nun können auch Log Dateien unter C:\Logs\ eingelesen werden.
Hierbei ist zu beachten, dass die Abfrage der Logverzeichnisse nicht rekursiv ist, sprich Unterordner werden hierbei nicht beachtet.

Die Grundeinrichtung ist hiermit abgeschlossen.
Zum Schluss noch im Kibana prüfen, ob die Log-Dateien eingelesen wurden.(zuvor bitte den „logstash-*“ Index in Kibana erstellen)

Nützliche Quellen und weitere To Do’s

Produktiv sollte dieser Server noch nicht eingesetzt werden.
Es fehlt hier noch die Verschlüsselung der Übertragung und das Einrichten von Filtern in Logstash.
Ebenso empfehlt es sich, Kibana über eine vorhandene Active Directory Struktur anzubinden.

Informationen zu dieser Einrichtung als auch einige Beispielkonfigurationen findet ihr unter:
https://www.elastic.co/guide/index.html


2 Kommentare

  1. Patrick

    Super Anleitung!
    Eine frage noch habe alles so eingerichtet(mit Winlogbeat). Jetzt wollte ich aber noch wissen wo die Daten vom Logstash gespeichert werden. Habe auch kein Index beim Elasticsearch.
    Bitte um Hilfe vielen Dank

    • Steven

      Hi Logstash an sich leitet die Daten ja nur gefiltert weiter. Gespeichert werden sie im ElasticSearch. Wenn du selbst keinen Index angelegt hast müsste normalerweise automatisch einer erstellt werden.

      Anbei noch ein Bild wie die Systeme miteinander arbeiten:
      https://logz.io/wp-content/uploads/2018/08/image21-1024×328.png

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.