ELK Stack ist die weltweit beliebteste Log-Management-Plattform. Es ist eine Sammlung von Open-Source-Produkten, darunter Elasticsearch, Logstash und Kibana. Alle diese 3 Produkte werden von Elastic entwickelt, verwaltet und gewartet.
ELK Stack ist eine leistungsstarke Open-Source-Plattform, die eine riesige Menge an protokollierten Daten verwalten kann. Das Eingabeprotokoll stammt im Allgemeinen von einer grafischen Webschnittstelle (GUI).
- Elasticsearch ist eine JSON-basierte Such- und Analysemaschine, die für horizontale Skalierbarkeit und einfachere Verwaltung vorgesehen ist.
- Logstash ist eine serverseitige Datenverarbeitungsschnittstelle, die Daten aus mehreren Quellen gleichzeitig sammeln kann. Es transformiert es dann und sendet die Daten dann an Ihren gewünschten Stash. Es ist eine Open-Source-Anwendung.
- Kibana wird verwendet, um Ihre Daten zu visualisieren und im Elastic Stack zu navigieren. Es ist auch ein Open-Source-Tool.
Installieren und konfigurieren Sie ELK Stack auf Ubuntu
In diesem Tutorial verwenden wir filebeat Protokolldaten an Logstash zu senden. Beats sind leichtgewichtige Datenversender und zunächst sollten wir den Agenten auf Servern installieren müssen.
Schritt 1) Installieren von Java 8
ElasticSearch unterstützt Java 8 und 9, aber das Problem ist, dass Logstash nur mit Java 8 kompatibel ist. Java 9 wird noch nicht unterstützt. Daher werden wir Oracle Java 8 installieren.
Starten Sie das Terminal und fügen Sie das Oracle Java 8-Repository hinzu, gefolgt von einem Systemupdate und der eigentlichen Installation.
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt install oracle-java8-set-default
Achten Sie auf das Terminal. Sie müssen den Lizenzvertragsfenstern zustimmen und "Ja" auswählen, um fortzufahren. Nachdem die Installation abgeschlossen ist, können Sie die Java-Version mit den folgenden Befehlen überprüfen:
.sudo java -version
sudo echo $JAVA_HOME
Schritt 2) Elasticsearch installieren und konfigurieren
Beginnen wir mit wget Befehl zum Herunterladen von Elasticsearch, gefolgt vom öffentlichen Signaturschlüssel:
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Zweitens installieren Sie das Paket apt-transport-https (Debian-basierte Distributionen benötigen dies).
sudo apt-get install apt-transport-https
Repository hinzufügen:
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Aktualisieren Sie die Repo-Liste und installieren Sie das Paket:
sudo apt-get update
sudo apt-get install elasticsearch
Lassen Sie uns die Datei „elasticsearch.yml“ ändern:
sudo vim /etc/elasticsearch/elasticsearch.yml
Entkommentieren Sie „network.host“ und „http.port“. Folgende Konfiguration sollte hinzugefügt werden:
network.host: localhost http.port: 9200
Als nächstes speichern und schließen Sie die Datei.
Um sicherzustellen, dass ElasticSearch reibungslos funktioniert, aktivieren Sie es beim Booten und starten Sie ElasticSearch.
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
Installation prüfen:
sudo curl -XGET 'localhost:9200/?pretty'
Schritt 3) Kibana installieren
Beginnen wir jetzt mit der Installation von Kibana und ändern die Kibana-Einstellungen:
sudo apt-get install kibana
sudo vim /etc/kibana/kibana.yml
Entkommentieren Sie folgende Zeilen:
server.port: 5601 server.host: "localhost" elasticsearch.url: "http://localhost:9200"
Speichern und beenden Sie die Datei.
Aktivieren Sie es beim Booten und starten Sie den Kibana-Dienst:
sudo systemctl enable kibana.service
sudo systemctl start kibana.service
Schritt 4) Konfigurieren von Nginx als Reverse Proxy für Kibana
Lassen Sie uns in den ähnlichen Zeilen Nginx installieren, konfigurieren und den Dienst starten. Verwenden Sie die folgenden Befehle nacheinander:
sudo apt-get install nginx apache2-utils
Virtuellen Host konfigurieren:
sudo vim /etc/nginx/sites-available/elk
Fügen Sie der Datei die folgende Konfiguration hinzu:
server { listen 80; server_name elk.fosslinux.com; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/.elkusersecret; location / { proxy_pass http://localhost: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; } }
Erstellen Sie eine Benutzer- und Kennwortdatei für die Webbrowser-Authentifizierung:
sudo htpasswd -c /etc/nginx/.elkusersecret elkusr
Passwort eingeben und wiederholen. Überprüfen Sie die Nginx-Konfigurationen:
sudo nginx -t
Aktivieren Sie Nginx beim Systemstart und starten Sie den Dienst neu:
sudo systemctl enable nginx.service
sudo systemctl restart nginx.service
Schritt 5) Logstash installieren und konfigurieren
Logstash installieren:
sudo apt-get install logstash
Hier generieren wir einen SSL-Zertifikatschlüssel, um die Protokollübertragung vom File Beat-Client zu sichern. Ändern Sie die „hosts“-Datei, bevor Sie das SSL-Zertifikat erstellen.
sudo vim /etc/hosts
Fügen Sie der Datei die folgende Zeile hinzu. Stellen Sie sicher, dass Sie die IP und den Servernamen auf Ihre ändern.
172.31.31.158 elk-server elk-server
Wenn Sie fertig sind, speichern und beenden Sie die Datei.
Wechseln Sie nun in das Verzeichnis Logstash.
sudo cd /etc/logstash/
Erstellen Sie einen Ordner für SSL:
sudo mkdir ssl
SSL-Zertifikat generieren. Ändern Sie im folgenden Befehl elk-server in Ihren Servernamen.
sudo openssl req -subj '/CN=elk-server/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt
Erstellen Sie folgende Dateien in „/etc/logstash/conf.d“.
sudo cd /etc/logstash/conf.d/
Erstellen Sie eine Filebeat-Eingabedatei mit vim.
sudo vim filebeat-input.conf
Fügen Sie die folgenden Zeilen hinzu.
input { beats { port => 5443 type => syslog ssl => true ssl_certificate => "/etc/logstash/ssl/logstash-forwarder.crt" ssl_key => "/etc/logstash/ssl/logstash-forwarder.key" } }
Speichern und schließen Sie die Datei und erstellen Sie eine neue Konfigurationsdatei.
sudo vim syslog-filter.conf
Fügen Sie den folgenden Inhalt hinzu.
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" ] } } }
Speichern und beenden Sie die Datei. Erstellen Sie elastische Suche Ausgabedatei.
sudo vim output-elasticsearch.conf
Fügen Sie die folgenden Zeilen hinzu.
output { elasticsearch { hosts => ["localhost:9200"] hosts => "localhost:9200" manage_template => false index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" document_type => "%{[@metadata][type]}" } }
Lassen Sie uns Logstash beim Booten aktivieren und den Dienst starten:
sudo systemctl enable logstash.service
sudo systemctl start logstash.service
Schritt 6) Installation und Konfiguration von Filebeat auf Client-Servern
Beginnen Sie mit der Bearbeitung der Hosts Datei zum Hinzufügen von Elk-Host-Einträgen. Stellen Sie sicher, IP und Namen durch Ihre zu ersetzen.
sudo vim /etc/hosts
172.31.31.158 elk-server
Speichern und beenden Sie die Datei.
Laden Sie den öffentlichen Signaturschlüssel herunter und installieren Sie ihn:
sudo wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Installieren Sie "apt-transport-https" und fügen Sie das Repo hinzu.
sudo apt-get install apt-transport-https
sudo echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Repo aktualisieren und Filebeat installieren.
sudo apt-get update
sudo apt-get install filebeat
Filebeat-Konfigurationen ändern.
sudo vim /etc/filebeat/filebeat.yml
Suchen Sie die folgende Zeile und ändern Sie den Wert auf „true“.
enabled: true
Hier ändern wir den Protokollpfad und Filebeat nicht leitet alle Protokolle im Ordner „var/log“ weiter
paths: - /var/log/*.log
Entkommentieren Sie die folgenden Zeilen:
output.logstash: # The Logstash hosts hosts: ["elk-server:5443"] ssl.certificate_authorities: ["/etc/filebeat/logstash-forwarder.crt"]
Kommentieren Sie Elasticsearch:
#output.elasticsearch: # Array of hosts to connect to. # hosts: ["localhost:9200"]
Speichern und beenden Sie die Datei.
Gehen Sie jetzt zum ELK-Server und holen Sie sich den Inhalt von „logstash-forwarder.crt“
sudo cat /etc/logstash/ssl/logstash-forwarder.crt
Kopieren Sie die Ausgabe und gehen Sie dann zum Elk-Client-Server.
Erstellen Sie eine Zertifikatsdatei
sudo vim /etc/filebeat/logstash-forwarder.crt
Kopierte Ausgabe einfügen und speichern &beenden.
Aktivieren Sie filebeat beim Systemstart Starten Sie filebeat Dienst.
sudo systemctl enable filebeat.service
sudo systemctl start filebeat.service
Schritt 7) Durchsuchen des Kibana-Dashboards
Starten Sie Ihren bevorzugten Webbrowser und geben Sie den Domänennamen gefolgt von Benutzername und Passwort ein.
http://elk.fosslinux.com
Geben Sie den erstellten Benutzernamen und das Passwort ein. Sie sollten die Willkommensseite von Kibana sehen. Klicken Sie auf die Schaltfläche „Eigenes entdecken“.
Sie sollten zur Kibana-Startseite weitergeleitet werden.
Klicken Sie auf der linken Seite auf „Entdecken“. Klicken Sie auf „Indexmuster erstellen“.
Definieren Sie dann das Indexmuster „filebeat-*“.
Klicken Sie auf „Weiter“, wählen Sie „@timestamp“ und klicken Sie auf „Indexmuster erstellen“.
Das Indexmuster sollte erstellt werden.
Klicken Sie auf das Menü „Entdecken“, um die Serverprotokolle anzuzeigen.
Protokolle werden gemäß dem Zeitstempel angezeigt. Klicken Sie auf einen beliebigen Zeitstempel, um ihn zu erweitern und den Inhalt der Protokolldatei und seine Details anzuzeigen.
Wenn Sie hier angekommen sind, bedeutet dies, dass Sie den ELK-Stack erfolgreich mit filebeat installiert und konfiguriert haben. Haben Sie Probleme? Teilen Sie uns dies gerne in den Kommentaren unten mit.