Was ist ein ELK-Stack?
ELK ist ein Akronym, das für Elasticsearch Logstash Kibana steht. Jeder Begriff in der Abkürzung ELK steht für eine individuelle Open-Source-Software, und alle diese Softwares werden gemeinsam für die Protokollanalyse verwendet. Die Protokollanalyse ist die Wissenschaft, aus computergenerierten Aufzeichnungen einen Sinn zu machen. Protokolle werden von Netzwerkgeräten, Betriebssystemen, Anwendungen und allen möglichen intelligenten oder programmierbaren Geräten ausgegeben. Ein Strom von Nachrichten in zeitlicher Abfolge umfasst oft ein Protokoll. Protokolle können in Dateien geleitet und auf der Festplatte gespeichert oder als Netzwerkstream an einen Protokollsammler geleitet werden.
Lassen Sie uns kurz die Aufgaben kennenlernen, die jede der Softwares im ELK-Stack durchführt.
Elasticsearch: Es speichert Protokolle und fungiert auch als Suchmaschine.
Logstash: Identifiziert die Protokolle im Netzwerk und sendet sie an die elastische Suche.
Kibana: Es ist eine Datenvisualisierungssoftware, die Daten aus der Elasticsearch-Datenbank auf interaktive Weise anzeigt.
Installationsverfahren
Nachdem Sie nun eine grundlegende Vorstellung vom ELK-Stack haben, können Sie jedes Modul oder jede Software nacheinander installieren. Aber vorher müssen wir JAVA auf dem Server installieren.
JAVA-Installation
Laden Sie das neueste JAVA-Paket herunter oder verwenden Sie den folgenden Befehl, um das JAVA 8-Paket zum Repository hinzuzufügen
sudo add-apt-repository -y ppa:webupd8team/java
Aktualisieren Sie dann das Repository mit dem Befehl
sudo apt-get update
Verwenden Sie die folgenden Befehle nacheinander, um JAVA erfolgreich zu installieren
echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections sudo apt-get -y install oracle-java8-installer
Um zu überprüfen, ob das Paket korrekt installiert wurde, geben Sie Folgendes in das Terminal
einjava -version
Wenn das Paket erfolgreich installiert wurde, erhalten Sie eine Nachricht wie diese
java version "1.8.0_111" Java(TM) SE Runtime Environment (build 1.8.0_111-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
Installieren von Elasticsearch
Verwenden Sie nacheinander die folgenden Befehle, um Elasticsearch herunterzuladen und auf Ihrem Server zu installieren
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list sudo apt-get update && sudo apt-get install elasticsearch
Führen Sie nun den folgenden Befehl aus, um Elasticsearch beim Booten zu starten
sudo update-rc.d elasticsearch defaults 95 10
Der Befehl liefert das folgende Ergebnis
Adding system startup for /etc/init.d/elasticsearch ... /etc/rc0.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc1.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc6.d/K10elasticsearch -> ../init.d/elasticsearch /etc/rc2.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc3.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc4.d/S95elasticsearch -> ../init.d/elasticsearch /etc/rc5.d/S95elasticsearch -> ../init.d/elasticsearch
Es ist jetzt an der Zeit, es zu starten und zu sehen, ob es gut funktioniert.
sudo /etc/init.d/elasticsearch start curl 'http://localhost:9200'
Bei erfolgreicher Installation und Ausführung sollten Sie ein Textergebnis ähnlich dem folgenden erhalten
root@ELKTest:~# curl 'http://localhost:9200' { "name" : "Termagaira", "cluster_name" : "elasticsearch", "cluster_uuid" : "72XGxcHjSjaaXDdtmIio0g", "version" : { "number" : "2.4.3", "build_hash" : "d38a34e7b75af4e17ead16f156feffa432b22be3", "build_timestamp" : "2016-12-07T16:28:56Z", "build_snapshot" : false, "lucene_version" : "5.5.2" }, "tagline" : "You Know, for Search" }
Jetzt müssen Sie die Konfigurationsdatei bearbeiten, um den Zugriff von außen auf Ihre Elasticsearch-Protokolle einzuschränken.
sudo vi /etc/elasticsearch/elasticsearch.yml
Suchen Sie nun die Zeile network.host, kommentieren Sie sie aus, indem Sie # vor der Zeile entfernen, und ersetzen Sie den Inhalt dieser Zeile durch localhost oder 127.0.0.1 . Für dieses Beispiel verwenden wir localhost
network.host: localhost
Elasticsearch neu starten
sudo service elasticsearch restart
Installieren von Logstash
Die Installation von Logstash ist der Installation von Elasticsearch sehr ähnlich, ebenso Kibana. Verwenden Sie die folgenden Befehle, um das Logstash-Paket zu importieren und zu installieren.
echo "deb https://packages.elastic.co/logstash/2.3/debian stable main" | sudo tee -a /etc/apt/sources.list sudo apt-get update && sudo apt-get install logstash
Führen Sie nun den folgenden Befehl aus, um Logstash beim Start zu starten.
sudo update-rc.d logstash defaults 95 10
Result: Adding system startup for /etc/init.d/logstash ... /etc/rc0.d/K10logstash -> ../init.d/logstash /etc/rc1.d/K10logstash -> ../init.d/logstash /etc/rc6.d/K10logstash -> ../init.d/logstash /etc/rc2.d/S95logstash -> ../init.d/logstash /etc/rc3.d/S95logstash -> ../init.d/logstash /etc/rc4.d/S95logstash -> ../init.d/logstash /etc/rc5.d/S95logstash -> ../init.d/logstash
Schließlich starte logstash
sudo /etc/init.d/logstash start
Installation von Kibana
Verwenden Sie die folgenden Befehle nacheinander, um Kibana zu importieren und zu installieren
echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list sudo apt-get update && sudo apt-get install kibana
Konfigurieren Sie nun Kibana so, dass es beim Booten mit
gestartet wirdsudo update-rc.d kibana defaults 95 10
Result: Adding system startup for /etc/init.d/kibana ... /etc/rc0.d/K10kibana -> ../init.d/kibana /etc/rc1.d/K10kibana -> ../init.d/kibana /etc/rc6.d/K10kibana -> ../init.d/kibana /etc/rc2.d/S95kibana -> ../init.d/kibana /etc/rc3.d/S95kibana -> ../init.d/kibana /etc/rc4.d/S95kibana -> ../init.d/kibana /etc/rc5.d/S95kibana -> ../init.d/kibana
Konfigurieren Sie die Kibana-Datei so, dass nur Sie Zugriff auf die Schnittstelle haben.
sudo vi /opt/kibana/config/kibana.yml
Suchen Sie in der Kibana-Konfigurationsdatei die Zeile server.host und ersetzen Sie „0.0.0.0“ durch „localhost“:Speichern und beenden Sie dann die Konfigurationsdatei.
server.host: "localhost"
Starten Sie nun den Dienst neu
sudo service kibana restart
Installation von NGINX
Bevor wir die Kibana-Weboberfläche verwenden können, müssen Sie einen Reverse-Proxy installieren. Installieren Sie NGINX also mit dem folgenden Befehl.
sudo apt-get install nginx apache2-utils
Durch Ausführen des folgenden Befehls müssen Sie den Benutzernamen und das Passwort für die Kibana-Webschnittstelle einrichten
sudo htpasswd -c /etc/nginx/htpasswd.users kibadmin
Anstelle von kibadmin können Sie einen beliebigen Namen Ihrer Wahl verwenden. Es erscheint eine Aufforderung zur Eingabe eines neuen Passworts. Geben Sie das Passwort für Ihr Kibana-Konto ein und schließen Sie den Vorgang ab.
Nehmen Sie nun Änderungen am Nginx-Standardserverblock vor, indem Sie Folgendes verwenden
sudo vim /etc/nginx/sites-available/default
Löschen Sie den Inhalt der Datei und fügen Sie den folgenden Code in die Datei ein, speichern Sie sie und beenden Sie sie.
server { listen 80; server_name yourdomain; auth_basic "Restricted Access"; auth_basic_user_file /etc/nginx/htpasswd.users; 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; } }
Stellen Sie sicher, dass Sie yourdomain durch Ihren entsprechenden Domainnamen ersetzen. Starten Sie dann den Webserver neu, indem Sie den folgenden Befehl ausführen.
sudo service nginx restart
Der ELK-Stack ist jetzt erfolgreich auf dem Server installiert
Generierung von SSL-Zertifikaten
Generieren Sie ein SSL-Zertifikat, indem Sie die Schritte im Link ausführen, indem Sie hier klicken.
Wenn Sie einen Schlüssel und ein Zertifikat haben, legen Sie sie in /etc/nginx/cert.key ab und /etc/nginx/cert.pem und erstellen Sie dann eine Datei /etc/nginx/sites-available/nsm mit folgendem Inhalt:
server { listen 80 default_server; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name hostname; <-- edit this to match your hostname root html; index index.html index.htm; ssl on; ssl_certificate cert.pem; ssl_certificate_key cert.key; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_protocols TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256'; ssl_prefer_server_ciphers on; location / { proxy_pass http://127.0.0.1:5601; include proxy_params; } }
Löschen Sie die standardmäßige Nginx-Konfigurationsdatei und aktivieren Sie die neue, indem Sie den folgenden Befehl verwenden, und starten Sie dann den Webserver neu.
$ sudo rm /etc/nginx/sites-enabled/default && sudo ln -s /etc/nginx/sites-available/nsm /etc/nginx/sites-enabled/nsm $ sudo /etc/init.d/nginx restart
Wenn alles ordnungsgemäß ausgeführt wird, ist die zentrale Suchinfrastruktur vorhanden und sollte unter https://