Technologieführer

Elastic Stack auf CentOS 8: Installation und Konfiguration

10 min read Logging Aktualisiert 18 Oct 2025
Elastic Stack auf CentOS 8 installieren
Elastic Stack auf CentOS 8 installieren

  • Diese Anleitung beschreibt Schritt für Schritt die Installation und Grundkonfiguration des Elastic Stack (Elasticsearch, Logstash, Kibana) auf einem CentOS 8-Server sowie die Einrichtung von Filebeat auf CentOS- und Ubuntu-Clients.
  • Sie enthält Repository-Setup, Dienstkonfigurationen, Nginx-Proxy, Logstash-Pipelines, Filebeat-Module, Prüfungen und Empfehlungen zur Sicherheit und Fehlerbehebung.

Worum es in diesem Artikel geht

Dieser Leitfaden zeigt, wie Sie eine zentrale Logging-Infrastruktur mit Elasticsearch, Logstash und Kibana (Elastic Stack) auf einem CentOS 8-Server aufsetzen und wie Sie Filebeat auf Client-Hosts (CentOS / Ubuntu) konfigurieren, damit Logdaten zentral gesammelt, verarbeitet und visualisiert werden können. Ziel ist ein reproduzierbarer, sicherer Basis-Stack für Produktionstests und kleinere Produktivumgebungen.

Wichtige Hinweise

  • Diese Anleitung konzentriert sich auf die Grundinstallation und typische Einstellungen für kleine Umgebungen. Für produktive, große oder hochverfügbare Umgebungen sind zusätzliche Maßnahmen (z. B. Cluster-Konfiguration, Zertifikate, Monitoring, Backup) erforderlich.
  • Alle hier verwendeten Pfade, Dateien und Befehle sind Beispiele; passen Sie Hostnamen, IP-Adressen und Benutzer an Ihre Umgebung an.

Wichtige Begriffe in einer Zeile

  • Elasticsearch: verteilte Such- und Analyse-Engine (speichert JSON-Dokumente).
  • Logstash: Daten-Pipeline für Aufnahme, Transformation und Weiterleitung.
  • Kibana: Web-UI zur Visualisierung von Elasticsearch-Daten.
  • Filebeat: leichter Shipper für Logdateien, sendet an Logstash oder Elasticsearch.

Inhalt (Übersicht)

  • Voraussetzungen
  • Architektur & Komponenten auf einen Blick
  • Schritt 1: Elastic-Repository hinzufügen
  • Schritt 2: Elasticsearch installieren und konfigurieren
  • Schritt 3: Kibana installieren und konfigurieren
  • Schritt 4: Nginx als Reverse-Proxy für Kibana
  • Schritt 5: Logstash installieren und Pipeline konfigurieren
  • Schritt 6: Filebeat auf Clients installieren und konfigurieren
  • Schritt 7: Testen und Überprüfen
  • Sicherheits- und Betriebs-Hinweise
  • Rollbasierte Checklisten
  • Fehlerbehebung und Tests
  • Kriterien bei Abnahme
  • Kurzanleitung (Playbook) für Produktion

Voraussetzungen

  • elk-master: CentOS 8, 64 Bit, empfohlen mindestens 4 GB RAM
  • client01: CentOS 8, 64 Bit, 1 GB RAM
  • client02: Ubuntu 18.04, 64 Bit, 1 GB RAM

Netzwerk: Die Hosts müssen sich gegenseitig über die verwendeten Ports erreichen können (Elasticsearch 9200 lokal, Kibana 5601 lokal, Logstash Beats-Port 5044, ggf. Nginx 80/443 extern).

Architektur & Komponenten auf einen Blick

  • Elasticsearch speichert und indexiert Logs als JSON-Dokumente. Es ist die zentrale Datenkomponente.
  • Logstash empfängt Daten (hier Beats), verarbeitet sie (Grok-Filter, Datum, Felder) und schreibt in Elasticsearch.
  • Kibana visualisiert die in Elasticsearch gespeicherten Indizes.
  • Filebeat läuft als Agent auf Clients und schickt Logdateien an Logstash (oder direkt an Elasticsearch).

Szenario dieser Anleitung: Ein einzelner CentOS 8-Server als zentrale Elastic-Instanz (Elasticsearch + Logstash + Kibana). Filebeat-Clients senden Logs an Logstash auf Port 5044. Kibana ist hinter einem Nginx-Proxy verfügbar und durch HTTP-Basic-Auth geschützt.

Was wir tun werden

  • Elastic-Repository hinzufügen
  • Elasticsearch installieren und konfigurieren
  • Kibana installieren und konfigurieren
  • Nginx als Reverse-Proxy für Kibana einrichten
  • Logstash installieren und Pipeline konfigurieren (Beats input, syslog grok, Elasticsearch output)
  • Filebeat auf CentOS und Ubuntu installieren und Module aktivieren
  • Testen der gesamten Kette: Filebeat → Logstash → Elasticsearch → Kibana

Schritt 1 - Elastic-Repository hinzufügen

Zuerst fügen Sie den GPG-Key und das offizielle Elastic-Repository auf dem CentOS 8-Server hinzu. Dadurch können Sie Pakete wie Elasticsearch, Logstash, Kibana und Beats direkt installieren.

Führen Sie auf dem CentOS-Server aus:

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Wechseln Sie dann in das Verzeichnis für YUM/DNF-Repos und erstellen Sie eine Datei:

cd /etc/yum.repos.d/
vim elasticsearch.repo

Fügen Sie diese Repository-Konfiguration ein:

[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Speichern und schließen.

Prüfen Sie die verfügbaren Repositories:

dnf repolist

Liste der Repositories per dnf

Als Ergebnis steht nun das Elastic-Repository zur Verfügung und Sie können die gewünschten Pakete installieren.

Wichtig: Falls Sie in Ihrer Umgebung Proxies verwenden, konfigurieren Sie die System-Proxy-Einstellungen, damit dnf/rpm das Remote-Repository erreichen.

Schritt 2 - Elasticsearch installieren und konfigurieren

Installieren Sie Elasticsearch:

sudo dnf install elasticsearch -y

Wechseln Sie ins Konfigurationsverzeichnis und bearbeiten Sie elasticsearch.yml:

cd /etc/elasticsearch/
vim elasticsearch.yml

Setzen Sie mindestens die folgenden Optionen (auskommentieren und anpassen):

network.host: 127.0.0.1
http.port: 9200

Hinweis: Für eine Produktionsumgebung konfigurieren Sie network.host auf die entsprechende IP oder verwenden eine Multi-Node-Cluster-Konfiguration.

Optional: JVM-Heap anpassen (abhängig vom verfügbaren RAM). Öffnen Sie jvm.options:

vim jvm.options

Ändern Sie die Heap-Größe (Beispiel für kleine Testumgebung):

-Xms512m
-Xmx512m

Speichern und schließen.

Aktivieren und starten Sie den Dienst:

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Elasticsearch konfigurieren und starten

Überprüfen Sie die Erreichbarkeit:

curl -XGET 'http://127.0.0.1:9200/?pretty'

Elasticsearch-Verbindung testen

Was prüfen

  • Der Dienst läuft (systemctl status elasticsearch).
  • Port 9200 ist erreichbar (lokal oder über die konfigurierte IP).
  • In Produktionsumgebungen: prüfen Sie Cluster-Name, Knotenname und verfügbare Heap-Größe.

Schritt 3 - Kibana installieren und konfigurieren

Installieren Sie Kibana auf demselben CentOS 8-Server:

sudo dnf install kibana

Konfiguration anpassen:

cd /etc/kibana/
vim kibana.yml

Passen Sie die wichtigsten Einstellungen an:

server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "http://127.0.0.1:9200"

Starten und aktivieren Sie den Dienst:

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana installieren

Prüfen Sie den Dienststatus und geöffnete Ports:

systemctl status kibana
netstat -plntu

Kibana-Service prüfen

Hinweis: Standardmäßig ist Kibana nur lokal erreichbar, daher verwenden wir im nächsten Schritt Nginx als Reverse-Proxy und schützen den Zugang.

Schritt 4 - Nginx als Reverse-Proxy für Kibana

Installieren Sie Nginx und htpasswd-Tool (httpd-tools):

sudo dnf install nginx httpd-tools

Erstellen Sie eine Nginx-Konfigurationsdatei für Kibana:

cd /etc/nginx/conf.d/
vim kibana.conf

Fügen Sie diese Konfiguration ein (Pfade und server_name anpassen):

server {
    listen 80;

    server_name elk.hakase-labs.io;

    auth_basic "Restricted Access";
    auth_basic_user_file /etc/nginx/.kibana-user;

    location / {
        proxy_pass http://127.0.0.1:5601;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

Speichern und schließen.

Erstellen Sie einen Benutzer für die Basic-Auth (ersetzen Sie hakase durch Ihren Benutzernamen):

sudo htpasswd -c /etc/nginx/.kibana-user hakase
TYPE YOUR PASSWORD

Testen Sie die Nginx-Konfiguration und starten Sie den Dienst:

nginx -t
systemctl enable nginx
systemctl start nginx

Nginx als Reverse-Proxy konfigurieren

Hinweise und Empfehlungen

  • Für produktive Umgebungen: TLS (HTTPS) vor Nginx aktivieren, Zertifikate verwenden (Let’s Encrypt oder interne CA).
  • Schützen Sie Kibana mit rollenbasierter Authentifizierung (Elastic Security) für sensible Umgebungen.

Schritt 5 - Logstash installieren und konfigurieren

Logstash empfängt Logs von Filebeat, parst sie (z. B. syslog via Grok) und schreibt in Elasticsearch.

Installieren Sie Logstash:

sudo dnf install logstash

Passen Sie die JVM-Heap-Größe an:

cd /etc/logstash/
vim jvm.options

Beispiel:

-Xms512m
-Xmx512m

Konfiguration der Pipeline-Dateien unter /etc/logstash/conf.d:

Erstellen Sie input-beat.conf:

cd /etc/logstash/conf.d/
vim input-beat.conf

Inhalt:

input {
  beats {
    port => 5044
  }
}

Erstellen Sie syslog-filter.conf (Grok-Parsing):

vim syslog-filter.conf

Inhalt:

filter {
  if [type] == "syslog" {
    grok {
      match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
      add_field => [ "received_at", "%{@timestamp}" ]
      add_field => [ "received_from", "%{host}" ]
    }
    date {
      match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
    }
  }
}

Erstellen Sie output-elasticsearch.conf:

vim output-elasticsearch.conf

Inhalt (beachten Sie, dass hosts einmal reicht):

output {
  elasticsearch { hosts => ["127.0.0.1:9200"]
    manage_template => false
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Starten und aktivieren Sie Logstash:

systemctl enable logstash
systemctl start logstash

Logstash konfigurieren

Prüfen Sie den Dienststatus und offene Ports:

systemctl status logstash
netstat -plntu

Logstash-Status prüfen

Hinweise

  • Testen Sie die Pipeline mit einem lokal gestarteten Filebeat oder mittels tcpdump/nc, um Verbindungsprobleme zu identifizieren.
  • Für komplexe Parsing-Anforderungen: entkoppeln Sie Ihre Grok-Patterns in eigene Dateien und nutzen Sie das Grok Debugger in Kibana.

Schritt 6 - Filebeat auf Clients installieren und konfigurieren

Filebeat läuft auf den Servern, deren Logs Sie zentralisieren möchten. Diese Anleitung beschreibt CentOS 8 und Ubuntu 18.04.

Filebeat auf CentOS 8 installieren

Fügen Sie wie zuvor den GPG-Key hinzu und erstellen Sie /etc/yum.repos.d/elasticsearch.repo (siehe Schritt 1). Dann installieren:

sudo dnf install filebeat

Filebeat installieren

Filebeat auf Ubuntu 18.04 installieren

Installieren Sie apt-transport-https und fügen Sie Repo & Key hinzu:

sudo apt install apt-transport-https
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt update
sudo apt install filebeat

apt-transport-https installieren

Filebeat konfigurieren

Die Konfiguration liegt in /etc/filebeat/filebeat.yml.

Deaktivieren Sie den direkten Elasticsearch-Output und aktivieren Sie stattdessen Logstash-Output (Beispiel):

#output.elasticsearch:
  # Array of hosts to connect to.
  #  hosts: ["127.0.0.1:9200"]

output.logstash:
  # The Logstash hosts
  hosts: ["10.5.5.25:5044"]

Aktivieren Sie Filebeat-Module und konfigurieren Sie die System-Module, damit Pfade zu Syslog/Auth logs korrekt sind.

Liste der Module prüfen:

filebeat modules list

Aktivieren Sie das system-Modul:

filebeat modules enable system

Bearbeiten Sie modules.d/system.yml und passen Sie die Pfade an:

Für CentOS:

  syslog:
    enabled: true
    var.paths: ["/var/log/messages"]

  auth:
    enabled: true
    var.paths: ["/var/log/secure"]

Für Ubuntu:

  syslog:
    enabled: true
    var.paths: ["/var/log/syslog"]

  auth:
    enabled: true
    var.paths: ["/var/log/auth.log"]

Starten und aktivieren Sie Filebeat:

systemctl enable filebeat
systemctl start filebeat
systemctl status filebeat

Beispielausgaben (CentOS/Ubuntu):

Ergebnis von CentOS Filebeat

Ergebnis von Ubuntu Filebeat

Hinweis: Stellen Sie sicher, dass die angegebene Logstash-IP (z. B. 10.5.5.25) erreichbar ist und Port 5044 offen ist.

Schritt 7 - Testen

Öffnen Sie den Browser und rufen Sie die Kibana-Domain auf (im Beispiel):

http://elk.hakase-labs.io/

Melden Sie sich mit dem zuvor erstellten Basic-Auth-Benutzer an.

Kibana Login

In Kibana erstellen Sie ein Index-Pattern für Filebeat-Indizes, z. B. filebeat-. Folgen Sie dem Assistenten (Connect to your Elasticsearch index → filebeat- → @timestamp als Zeitfeld).

Kibana Dashboard

Sobald das Index-Pattern existiert, rufen Sie Discover auf und prüfen Sie eingehende Logs:

Filebeat Index erstellen

Timestamp auswählen

Logs in Discover

Beispiel-Logs für CentOS und Ubuntu:

Logs CentOS 8

Logs Ubuntu

Wenn Logs angezeigt werden, ist die gesamte Pipeline erfolgreich eingerichtet: Filebeat → Logstash → Elasticsearch → Kibana.


Sicherheits- und Betriebs-Hinweise

Wichtige Maßnahmen vor produktivem Einsatz:

  • TLS/SSL: Verschlüsseln Sie die Kommunikation zwischen Filebeat, Logstash und Elasticsearch mit TLS-Zertifikaten. Dies verhindert Man-in-the-Middle und Abhören.
  • Authentifizierung & Rollen: Verwenden Sie Elastic Security oder eine Proxy-Lösung mit Authentifizierung, um Kibana/Elasticsearch zu schützen.
  • Firewall: Öffnen Sie nur notwendige Ports (Logstash 5044 intern, Kibana 5601 lokal, Nginx 80/443 extern).
  • Monitoring: Aktivieren Sie Monitoring für Elasticsearch (X-Pack Monitoring oder externe Lösungen).
  • Backups: Legen Sie Snapshot-Routinen für Elasticsearch-Indices fest.
  • Ressourcenplanung: Elasticsearch benötigt ausreichend RAM und festgelegte JVM-Heap-Größe. Für produktive Knoten gelten Faustregeln (Heap max 50% des physikalischen RAM, nicht über 32 GB).
  • SELinux: Falls aktiviert, prüfen Sie SELinux-Policies oder temporär permissive Modi während Tests.

Datenschutz / GDPR-Hinweis

  • Logs können personenbezogene Daten enthalten. Prüfen Sie vor dem zentralen Speichern personenbezogene Daten und definieren Sie Aufbewahrungsfristen, Zugriffskontrollen und Löschprozesse.
  • Minimieren Sie die Datenerfassung (Data Minimization) und dokumentieren Sie die Rechtsgrundlage für die Verarbeitung.

Rollbasierte Checklisten

Administrator (Installation und Infrastruktur)

  • Elastic-Repository einrichten
  • Elasticsearch installieren, konfigurieren und Dienst aktivieren
  • Kibana installieren und lokal testen
  • Nginx-Proxy mit Basic-Auth einrichten
  • Logstash installieren und Pipeline-Dateien legen
  • Firewall- und SELinux-Einstellungen prüfen
  • Monitoring und Snapshots planen

Operator (Betrieb & Monitoring)

  • Dienste (Elasticsearch, Logstash, Kibana, Filebeat) überwachen
  • Logs auf Parsing-Fehler in Logstash prüfen
  • Indizes auf Wachstum und Shard-Verteilung prüfen
  • Regelmäßige Snapshots testen
  • Sicherheitsupdates einspielen

Developer / Security

  • Grok-Pattern testen und anpassen
  • Sensible Felder maskieren oder entfernen
  • Zugriffskontrollen in Kibana konfigurieren

Fehlerbehebung und Tests

Typische Probleme & Lösungshinweise

  • Filebeat verbindet nicht zu Logstash: Prüfen Sie, ob Port 5044 erreichbar ist (telnet/nc). Prüfen Sie Logstash-Logs (/var/log/logstash/logstash-plain.log).
  • Logstash verarbeitet Events nicht: Verwenden Sie stdin/output-stdout zum Debugging oder aktivieren Sie debug-Logging.
  • Kibana zeigt keine Indizes: Prüfen Sie, ob Elasticsearch Indizes hat (curl http://127.0.0.1:9200/_cat/indices?v).
  • Nginx-Proxy liefert 502/504: Prüfen Sie, ob Kibana lokal läuft und Port 5601 offen ist.
  • Grok-Matches fehlschlagen: Testen Sie Patterns im Grok Debugger (Kibana) und passen Sie das Pattern an verschachtelte Nachrichten an.

Beispielprüfung: Indizes anschauen

curl -s 'http://127.0.0.1:9200/_cat/indices?v'

Akzeptanztests

  • Filebeat-Client sendet ein Test-Log, das in Kibana innerhalb von 30–60 Sekunden sichtbar ist.
  • Logstash-Pipeline parst syslog-Felder (syslog_message, syslog_program, syslog_timestamp).
  • Kibana ist über den Nginx-Proxy mit Basic-Auth erreichbar.

Kriterien bei Abnahme

  • Elasticsearch ist erreichbar und hat Index-Metadaten
  • Logstash empfängt Beats-Verkehr auf Port 5044
  • Kibana zeigt Filebeat-Indizes an und Discover listet Logs
  • Grundlegende Sicherheit: Nginx-Basic-Auth oder äquivalent aktiv
  • Dokumentation: verwendete IPs, Ports, Benutzernamen und Cron-Jobs sind dokumentiert

Kurzanleitung (Playbook) für Deployment

  1. Host vorbereiten: Aktualisieren, Firewallregeln prüfen, Zeitserver konfigurieren.
  2. Elastic-Repo hinzufügen und Paketinstallation durchführen (Elasticsearch, Logstash, Kibana, Filebeat).
  3. Elasticsearch konfigurieren (network.host, Heap-Tuning), starten.
  4. Kibana konfigurieren (localhost), starten und lokal testen.
  5. Nginx konfigurieren, Proxy + Basic-Auth + TLS vorbereiten.
  6. Logstash-Pipelines anlegen (input-beat.conf, filter, output), starten.
  7. Filebeat auf Clients installieren, filebeat.yml anpassen, system-Modul aktivieren.
  8. End-to-End-Test: Filebeat sendet Logs → Logstash verarbeitet → Elasticsearch indexiert → Kibana visualisiert.
  9. Monitoring und Backup einrichten.

Rollback (Kurz)

  • Stoppen Sie Dienste (Filebeat → Logstash → Kibana → Elasticsearch) in umgekehrter Reihenfolge.
  • Stellen Sie Snapshots wieder her, wenn Index-Daten inkorrekt sind.
  • Entfernen Sie neue Konfigurationsdateien oder rollen Sie die Konfiguration von einer Sicherung zurück.

Testfälle / Akzeptanzkriterien

  • TC1: Filebeat startet auf Client und verbindet zu Logstash (Verbindungsaufbau in logs).
  • TC2: Logstash schreibt Events in den Index filebeat-YYYY.MM.DD.
  • TC3: Kibana-Discover zeigt gelieferte Events mit @timestamp.
  • TC4: Nginx-Proxy erlaubt Zugriff mit gültigen Anmeldedaten und verweigert ohne.

Abschlusszusammenfassung

  • Diese Anleitung führt durch die Installation eines Basis-Elastic-Stacks auf CentOS 8 und die Einrichtung von Filebeat-Clients.
  • Sie enthält Konfigurationsbeispiele für Repository, Dienste, Nginx-Proxy, Logstash-Pipelines und Filebeat-Module sowie Empfehlungen für Sicherheit und Betrieb.
  • Für produktive Umgebungen empfehlen sich zusätzlich TLS, Authentifizierung, Monitoring, regelmäßige Snapshots und Kapazitätsplanung.

Wichtige Referenz

Wichtige Notizen

  • Passen Sie in allen Beispielen IP-Adressen, Hostnamen und Credentials vor dem Einsatz in Produktivumgebungen an.
  • Prüfen Sie Logdateien (/var/log/elasticsearch, /var/log/logstash, /var/log/kibana, /var/log/filebeat) bei Problemen.
Autor
Redaktion

Ähnliche Materialien

Lastüberwachung mit atop unter Linux
Monitoring

Lastüberwachung mit atop unter Linux

EVE Online: Packet Loss erkennen & beheben
Gaming Netzwerk

EVE Online: Packet Loss erkennen & beheben

Android ausschalten ohne Power‑Taste – 6 Methoden
Android Hilfe

Android ausschalten ohne Power‑Taste – 6 Methoden

.NET-Optimierungsdienst: CPU-Probleme in Windows 10 beheben
Windows 10

.NET-Optimierungsdienst: CPU-Probleme in Windows 10 beheben

iPhone: Wetter-App mit mobilen Daten aktualisieren
iPhone

iPhone: Wetter-App mit mobilen Daten aktualisieren

Taskleisten-Anheftungen in Windows 11 steuern
Windows 11

Taskleisten-Anheftungen in Windows 11 steuern