Elastic Stack auf CentOS 8: Installation und Konfiguration

- 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
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
Überprüfen Sie die Erreichbarkeit:
curl -XGET 'http://127.0.0.1:9200/?pretty'
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
Prüfen Sie den Dienststatus und geöffnete Ports:
systemctl status kibana
netstat -plntu
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
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
Prüfen Sie den Dienststatus und offene Ports:
systemctl status logstash
netstat -plntu
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 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
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):
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):
Melden Sie sich mit dem zuvor erstellten Basic-Auth-Benutzer an.
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).
Sobald das Index-Pattern existiert, rufen Sie Discover auf und prüfen Sie eingehende Logs:
Beispiel-Logs für CentOS und 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
- Host vorbereiten: Aktualisieren, Firewallregeln prüfen, Zeitserver konfigurieren.
- Elastic-Repo hinzufügen und Paketinstallation durchführen (Elasticsearch, Logstash, Kibana, Filebeat).
- Elasticsearch konfigurieren (network.host, Heap-Tuning), starten.
- Kibana konfigurieren (localhost), starten und lokal testen.
- Nginx konfigurieren, Proxy + Basic-Auth + TLS vorbereiten.
- Logstash-Pipelines anlegen (input-beat.conf, filter, output), starten.
- Filebeat auf Clients installieren, filebeat.yml anpassen, system-Modul aktivieren.
- End-to-End-Test: Filebeat sendet Logs → Logstash verarbeitet → Elasticsearch indexiert → Kibana visualisiert.
- 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
- Offizielle Elastic-Dokumentation: https://www.elastic.co/guide/index.html
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.
Ähnliche Materialien

Lastüberwachung mit atop unter Linux

EVE Online: Packet Loss erkennen & beheben

Android ausschalten ohne Power‑Taste – 6 Methoden

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

iPhone: Wetter-App mit mobilen Daten aktualisieren
