In diesem Handbuch erfahren Sie, wie Sie den Elastic Stack unter Ubuntu 18.04 installieren. Elastischer Stapel , früher bekannt als ELK-Stack ist eine Sammlung oder ein Stapel kostenloser Open-Source-Software von Elastic Company, die für die zentralisierte Protokollierung entwickelt wurde.
Es ermöglicht das Suchen, Analysieren und Visualisieren von Protokollen aus verschiedenen Quellen in unzähligen Formaten. Die zentralisierte Protokollierung hilft bei der Identifizierung von Server- oder Anwendungsproblemen von einem gemeinsamen Punkt aus.
Elastische Stapelkomponenten
Elastic Stack besteht aus 4 Hauptkomponenten.
- Elasticsearch :Dies ist eine RESTful-Suchmaschine, die alle gesammelten Daten speichert oder hält
- Logstash :Dies ist die Komponente, die die Daten verarbeitet und für die elastische Suche parst
- Kibana :Dies ist eine Webschnittstelle, die Protokolle visualisiert
- Beats :Dies sind leichtgewichtige Datenversender, die Protokolle von Hunderten/Tausenden von Servern an den zentralen Server senden, auf dem ELK konfiguriert ist.
Sehen wir uns nun an, wie Sie den Elastic Stack auf Ubuntu 18.04 installieren können.
Voraussetzungen
Bevor Sie mit der Installation beginnen, stellen Sie sicher, dass Sie über die folgende Infrastruktur verfügen.
- Ubuntu-Server 18.04 LTS mit Root-Zugriff und einem Nicht-Root-Benutzer plus ufw-Firewall. Das Folgende sollten die Mindestanforderungen des Servers sein.
- Ubuntu 18.04 LTS
- 4 GB Arbeitsspeicher
- 2 CPUs
- Java 8 auf Ihrem System installiert, das von Elasticsearch und Logstash benötigt wird.
- NGINX ist auf Ihrem Server installiert, der später für die Handhabung von Kibana konfiguriert wird. Empfohlene Lektüre:Nginx unter Ubuntu 18.04 installieren
Nachdem dies gesagt ist, lassen Sie uns eintauchen und mit der Installation des Elastic-Stacks auf Ubuntu beginnen.
1. Installieren Sie Elasticsearch auf Ubuntu
Zunächst importieren wir den öffentlichen GPG-Schlüssel von Elasticsearch in APT. Elastic-Stack-Pakete werden normalerweise mit einem Elasticsearch-Signaturschlüssel signiert, um Ihr System vor Paket-Spoofing zu schützen. Außerdem werden authentifizierte Pakete vom Paketmanager als vertrauenswürdig angesehen.
Führen Sie zum Importieren des GPG-Schlüssels Folgendes aus:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
Fügen Sie als Nächstes das Elastic-Repository zu sources.list.d
hinzu Verzeichnis mit dem folgenden Befehl.
echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list
Die Ausgabe der beiden Befehle sieht wie folgt aus:
Ausgabe
Aktualisieren Sie nun das Repository des Systems mit dem folgenden Befehl.
sudo apt update
Beispielausgabe
Installieren Sie jetzt Elasticsearch mit dem folgenden Befehl.
sudo apt install elasticsearch
Ausgabe
2. Elasticsearch auf Ubuntu konfigurieren
Elasticsearch lauscht auf Port 9200. Wir werden jedoch den externen Zugriff einschränken, sodass externe Parteien nicht auf Daten zugreifen und den elastischen Cluster herunterfahren können. Allerdings werden wir einige Änderungen an der Elasticsearch-Konfigurationsdatei vornehmen, wie unten gezeigt
sudo nano /etc/elasticsearch/elasticsearch.yml
Suchen Sie network.host
-Attribut, kommentieren Sie es aus und fügen Sie localhost
hinzu als seinen Wert. Kommentieren Sie auch http.port
aus Attribut.
Ausgabe
network.host: localhost
http.port: 9200
Als nächstes starten und aktivieren Sie den Elasticsearch-Dienst wie gezeigt.
sudo systemctl start elasticsearch
sudo systemctl enable elasticsearch
Ausgabe
Zu diesem Zeitpunkt sollte Elasticsearch betriebsbereit sein. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen.
systemctl status elasticsearch
Ausgabe
Sie können auch netstat
verwenden Befehl wie gezeigt.
netstat -pnltu
Sie können auch curl
ausführen Befehl wie gezeigt.
curl -X GET "localhost:9200"
Ausgabe
Groß! Wir haben die Installation und Konfiguration von Elasticsearch abgeschlossen. Als nächstes werden wir Logstash installieren und konfigurieren.
3. Logstash installieren und konfigurieren
Die zweite Komponente des Elastic-Stacks, die wir installieren werden, ist Logstash. Logstash wird für das Sammeln und Zentralisieren von Protokollen von verschiedenen Servern mit Filebeat Data Shipper verantwortlich sein. Anschließend werden Syslog-Daten gefiltert und an Elasticsearch weitergeleitet.
Lassen Sie uns zunächst bestätigen, dass OpenSSL ausgeführt wird. Führen Sie dazu aus.
openssl version -a
Ausgabe
Führen Sie den folgenden Befehl aus, um Logstash zu installieren.
sudo apt install logstash -y
Ausgabe
Als nächstes bearbeiten Sie /etc/hosts
Datei und fügen Sie Folgendes hinzu.
18.224.44.11 elk-master
Wobei 18.224.44.11 die IP-Adresse des masterELk-Servers ist.
Wir werden dann den SSL-Zertifikatsschlüssel generieren, um die Übertragung der Protokolldaten vom Client-Filebeat zum Logstash-Server zu sichern.
Erstellen Sie dazu zunächst ein neues SSL-Verzeichnis unter dem Logstash-Konfigurationsverzeichnis „/etc/logstash“ und navigieren Sie in dieses Verzeichnis.
mkdir -p /etc/logstash/ssl
cd /etc/logstash/
Jetzt können Sie das SSL-Zertifikat wie unten gezeigt generieren.
openssl req -subj '/CN=elk-master/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout ssl/logstash-forwarder.key -out ssl/logstash-forwarder.crt
Als Nächstes erstellen wir neue Konfigurationsdateien für logstash. Wir erstellen eine Konfigurationsdatei ‚filebeat-input.conf‘ als Eingabedatei von filebeat, ‚syslog-filter.conf‘ für die Syslog-Verarbeitung und schließlich eine ‚output-elasticsearch.conf‘-Datei, um die Elasticsearch-Ausgabe zu definieren.
Navigieren Sie zum Logstash-Verzeichnis und erstellen Sie eine „filebeat-input.conf“ im Verzeichnis „conf.d“.
cd /etc/logstash/
vim conf.d/filebeat-input.conf
Fügen Sie die folgende Konfiguration ein.
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 beenden Sie den Texteditor.
Für die Syslog-Verarbeitungsprotokolldaten verwenden wir das Filter-Plugin namens „grok“ zum Parsen der Syslog-Dateien.
Erstellen Sie eine neue Konfiguration „syslog-filter.conf“.
vim conf.d/syslog-filter.conf
Fügen Sie die Konfiguration unten ein.
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 den Texteditor.
Erstellen Sie abschließend eine Konfigurationsdatei mit dem Namen „output-elasticsearch.conf“ für die Ausgabe von Elasticsearch.
vim conf.d/output-elasticsearch.conf
Fügen Sie den folgenden Inhalt ein.
output {
elasticsearch { hosts => ["localhost:9200"]
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Speichern und beenden Sie den Texteditor.
Wenn das gesagt und getan ist, aktivieren und starten Sie den Logstash-Dienst.
sudo systemctl enable logstash
sudo systemctl start logstash
Führen Sie den Befehl aus, um zu überprüfen, ob Logstash ausgeführt wird.
sudo systemctl status logstash
Beispielausgabe
Sie können auch netstat
verwenden Befehl wie gezeigt.
netstat -pnltu
4. Kibana unter Ubuntu installieren und konfigurieren
Als nächstes werden wir Kibana mit dem folgenden Befehl installieren.
sudo apt install kibana -y
Ausgabe
Als nächstes werden wir ein paar Änderungen an der Kibana-Konfigurationsdatei vornehmen.
vim /etc/kibana/kibana.yml
Suchen Sie die folgenden Attribute und kommentieren Sie sie aus.
server.port: 5601
server.host: "localhost"
elasticsearch.url: "https://localhost:9200"
Speichern und beenden Sie den Texteditor.
Aktivieren und starten Sie dann den Kibana-Dienst:
sudo systemctl enable kibana
sudo systemctl start kibana
Ausgabe
Sie können mit netstat
bestätigen, dass Kibana auf dem Standardport 5601 ausgeführt wird Befehl wie gezeigt.
netstat -pnltu
Ausgabe
5. Installieren und Konfigurieren von NGINX als Reverse-Proxy für Kibana
Wir verwenden NGINX als Reverse-Proxy für Kibana-Dashboards. Sie müssen Nginx und „Apache2-utils“ wie unten gezeigt installieren.
sudo apt install nginx apache2-utils -y
Ausgabe
Erstellen Sie als Nächstes eine neue virtuelle Hostdatei mit dem Namen kibana.
vim /etc/nginx/vim sites-available/kibana
Fügen Sie den folgenden Inhalt in die virtuelle Hostdatei ein
server {
listen 80;
server_name localhost;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass https://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;
}
}
Speichern und beenden Sie den Texteditor. Empfohlene Lektüre:NGINX-Standortrichtlinie.
Erstellen Sie als Nächstes eine Basisauthentifizierung für das Kibana-Dashboard mit htpasswd
Befehl wie gezeigt.
sudo htpasswd -c /etc/nginx/.kibana-user elastic
Type the elastic user password
Ausgabe
Im obigen Beispiel ist der Benutzername elastisch und das Passwort ist das, was Sie angeben.
Aktivieren Sie als Nächstes die Konfiguration des virtuellen Kibana-Hosts und testen Sie die Nginx-Konfiguration.
ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/
nginx -t
Ausgabe
Aktivieren Sie den Nginx-Server ohne Fehler und starten Sie ihn neu.
systemctl enable nginx
systemctl restart nginx
6. Installation und Konfiguration von Filebeat
In diesem Schritt konfigurieren wir den Filebeat Data Shipper auf unserem Elk-Master-Server. Dadurch werden alle Syslog-Meldungen an Logstash weitergeleitet, die von Kibana verarbeitet und visualisiert werden.
Um Filebeat zu installieren, führen Sie Folgendes aus:
sudo apt install filebeat
Als nächstes öffnen Sie die Filebeat-Konfigurationsdatei.
sudo vim /etc/filebeat/filebeat.yml
Wir werden Logstash verwenden, um eine zusätzliche Verarbeitung der von Filebeat erfassten Daten durchzuführen. Filebeat wird nicht benötigt, um Daten direkt an Elasticsearch zu senden. Suchen und kommentieren Sie daher den Elasticsearch-Abschnitt wie gezeigt.
#output.elasticsearch:
# Array of hosts to connect to.
#hosts: ["localhost:9200"]
Gehen Sie als Nächstes zum Logstash-Bereich und kommentieren Sie wie gezeigt aus.
output.logstash:
# The Logstash hosts
hosts: ["localhost:5044"]
Aktivieren Sie die Filebeat-Prospektoren, indem Sie den Zeilenwert „enabled“ auf „true“ ändern.
enabled: true
Geben Sie die Systemprotokolldateien an, die an den Logstash-Server gesendet werden sollen. In diesem Beispiel fügen wir die SSH-Protokolldatei „auth.log“ und die Syslog-Datei hinzu.
paths:
- /var/log/auth.log
- /var/log/syslog
Speichern und beenden.
Kopieren Sie abschließend die Logstash-Zertifikatsdatei – logstash-forwarder.crt – nach /etc/filebeat
Verzeichnis.
cp ~/logstash-forwarder.crt /etc/filebeat/logstash-forwarder.crt
Starten und aktivieren Sie nun filebeat.
systemctl start filebeat
systemctl enable filebeat
So prüfen Sie den Status des Filebeat-Laufs:
systemctl status filebeat
Ausgabe
7. Testen des Elasticsearch-Stacks
Um unseren Elastic-Stack zu testen, öffnen Sie Ihren Browser und durchsuchen Sie die IP Ihres Servers, gefolgt von Port 5601, dem Port, den Kibana abhört.
ip-address:5601
Geben Sie den Benutzernamen und das Passwort ein und später wird der folgende Bildschirm angezeigt.
Klicken Sie auf die Registerkarte „Entdecken“ und dann auf „Filebeat“. Die folgende Benutzeroberfläche wird angezeigt, die Ihnen ein Live-Streaming von visualisierten Daten bietet.
Herzliche Glückwünsche! Sie haben den Elastic Stack und den Elastic Beat „Filebeat“ erfolgreich auf Ihrem Ubuntu 18.04-System installiert und konfiguriert.