Elasticsearch ist eine Open-Source-Suchmaschine, die auf Lucene basiert und in Java entwickelt wurde. Es bietet eine verteilte und mandantenfähige Volltextsuchmaschine mit einer HTTP-Dashboard-Webschnittstelle (Kibana). Die Daten werden mit einem JSON-Dokumentenschema abgefragt, abgerufen und gespeichert. Elasticsearch ist eine skalierbare Suchmaschine, mit der nach allen Arten von Textdokumenten, einschließlich Protokolldateien, gesucht werden kann. Elasticsearch ist das Herzstück des „Elastic Stack“ oder ELK Stack.
Logstash ist ein Open-Source-Tool zum Verwalten von Ereignissen und Protokollen. Es bietet Echtzeit-Pipelining für Datenerfassungen. Logstash sammelt Ihre Protokolldaten, konvertiert die Daten in JSON-Dokumente und speichert sie in Elasticsearch.
Kibana ist ein Open-Source-Datenvisualisierungstool für Elasticsearch. Kibana bietet eine hübsche Dashboard-Weboberfläche. Es ermöglicht Ihnen, Daten von Elasticsearch zu verwalten und zu visualisieren. Es ist nicht nur schön, sondern auch mächtig.
In diesem Tutorial zeigen wir Ihnen Schritt für Schritt die Installation und Konfiguration des ‚Elastic Stack‘ auf dem CentOS 8 Server. Wir installieren und richten Elasticsearch, Logstash und Kibana ein. Und dann richten Sie den Beats-'Filebeat' auf Client-Ubuntu- und CentOS-Systemen ein.
Voraussetzungen
- CentOS 8 64 Bit mit 4 GB RAM - elk-master
- CentOS 8 64 Bit mit 1 GB RAM – client01
- Ubuntu 18.04 64 Bit mit 1 GB RAM – client02
Was wir tun werden:
- Elastic Repository zum CentOS 8-Server hinzufügen
- Installieren und konfigurieren Sie Elasticsearch
- Kibana-Dashboard installieren und konfigurieren
- Nginx als Reverse-Proxy für Kibana einrichten
- Logstash installieren und konfigurieren
- Filebeat installieren und konfigurieren
- Testen
Schritt 1 – Elastic-Repository hinzufügen
Zuerst werden wir den Elasticsearc-Schlüssel und das Repository zum CentOS 8-Server hinzufügen. Mit dem von elastic.co bereitgestellten Elasticsearch-Repository können wir elastische Produkte installieren, darunter Elasticsearch, Logstash, Kibana und Beats.
Fügen Sie den elastischen Schlüssel mit dem folgenden Befehl zum System hinzu.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Gehen Sie danach in das Verzeichnis ‚/etc/yum.repos.d‘ und erstellen Sie eine neue Repository-Datei ‚elasticsearch.repo‘.
cd /etc/yum.repos.d/
vim elasticsearch.repo
Fügen Sie das Elasticsearch-Repository unten 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.
Überprüfen Sie nun alle verfügbaren Repositorys auf dem System mit dem folgenden dnf-Befehl.
dnf repolist
Und Sie erhalten das Elasticsearch-Repository, das dem CentOS 8-Server hinzugefügt wurde.
Daher können Sie Elastic-Produkte wie Elasticsearch, Logstash und Kibana usw. installieren.
Schritt 2 – Elasticsearch installieren und konfigurieren
In diesem Schritt installieren und konfigurieren wir Elasticsearch.
Installieren Sie das Elasticsearch-Paket mit dem folgenden dnf-Befehl.
sudo dnf install elasticsearch -y
Gehen Sie nach Abschluss der Installation in das Verzeichnis „/etc/elasticsearch“ und bearbeiten Sie die Konfigurationsdatei „elasticsearch.yml“ mit dem vim-Editor.
cd /etc/elasticsearch/
vim elasticsearch.yml
Entkommentieren Sie die folgenden Zeilen und ändern Sie den Wert für jede Zeile wie folgt.
network.host: 127.0.0.1
http.port: 9200
Speichern und schließen.
Optional:
Sie können die elastische Suche optimieren, indem Sie die JVM-Konfigurationsdatei „jvm.options“ bearbeiten und die Heap-Größe basierend auf Ihrem verfügbaren Arbeitsspeicher einrichten.
Bearbeiten Sie die JVM-Konfiguration „jvm.options“ mit dem vim-Editor.
vim jvm.options
Ändern Sie die minimale/maximale Heap-Größe über die Xms- und Xmx-Konfiguration wie unten beschrieben.
-Xms512m
-Xmx512m
Speichern und schließen.
Laden Sie als Nächstes die Konfiguration des systemd-Managers neu und fügen Sie den Elasticsearch-Dienst zur Startzeit hinzu.
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
Starten Sie dann den Elasticsearch-Dienst.
sudo systemctl start elasticsearch
Infolgedessen läuft die elastische Suche hinter der lokalen IP-Adresse „127.0.0.1“ mit dem Standardport „9200“ auf dem CentOS 8-Server.
Sie können die elastische Suche mit dem folgenden Curl-Befehl überprüfen.
curl -XGET 'http://127.0.0.1:9200/?pretty'
Und unten ist das Ergebnis, das Sie erhalten werden.
Schritt 3 – Kibana Dashboard installieren und konfigurieren
Nach der Installation von Elasticsearch werden wir das Kibana Dashboard auf dem CentOS 8-Server installieren und konfigurieren.
Installieren Sie das Kibana-Dashboard mit dem folgenden dnf-Befehl.
sudo dnf install kibana
Gehen Sie nach Abschluss der Installation in das Verzeichnis „/etc/kibana“ und bearbeiten Sie die Konfigurationsdatei „kibana.yml“.
cd /etc/kibana/
vim kibana.yml
Entkommentieren und ändern Sie die Konfiguration einiger Zeilen wie unten.
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "http://127.0.0.1:9200"
Speichern und schließen.
Fügen Sie als Nächstes den Kibana-Dienst zum Systemstart hinzu und starten Sie den Kibana-Dienst.
sudo systemctl enable kibana
sudo systemctl start kibana
Der Kibana-Dienst läuft auf dem CentOS 8-Server, überprüfen Sie ihn mit den folgenden Befehlen.
systemctl status kibana
netstat -plntu
Und Sie erhalten das Ergebnis wie folgt.
Als Ergebnis ist der Kibana-Dienst aktiv und läuft standardmäßig über den TCP-Port „5601“.
Schritt 4 – Einrichten von Nginx als Reverse-Proxy für Kibana
In diesem Schritt installieren wir den Nginx-Webserver und richten ihn als Reverse-Proxy für das Kibana-Dashboard ein.
Installieren Sie Nginx und httpd-tools mit dem folgenden dnf-Befehl.
sudo dnf install nginx httpd-tools
Gehen Sie nach Abschluss der Installation in das Verzeichnis „/etc/nginx/conf.d“ und erstellen Sie eine neue Konfigurationsdatei „kibana.conf“.
cd /etc/nginx/conf.d/
vim kibana.conf
Fügen Sie die folgende Konfiguration ein.
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.
Als nächstes müssen wir die grundlegende Authentifizierung zum Sichern des Kibana-Zugriffs erstellen. Ändern Sie den „hakase“-Benutzer durch Ihren eigenen und führen Sie den htpasspwd-Befehl wie unten beschrieben aus.
sudo htpasswd -c /etc/nginx/.kibana-user hakase
TYPE YOUR PASSWORD
Geben Sie Ihr Passwort ein und testen Sie die nginx-Konfiguration.
nginx -t
Stellen Sie sicher, dass kein Fehler vorliegt.
Fügen Sie nun den nginx-Dienst zum Systemstart hinzu und starten Sie den nginx-Dienst.
systemctl enable nginx
systemctl start nginx
Als Ergebnis sind die Installation und Konfiguration von Nginx als Reverse-Proxy für Kibana Dashboard abgeschlossen.
Schritt 5 – Logstash installieren und konfigurieren
In diesem Schritt installieren und konfigurieren wir logstash the log shipper. Wir installieren Logstash, richten die Eingabe-Beats ein, richten die Syslog-Filterung mit dem Logstash-Plugin namens „grok“ ein und richten dann die Ausgabe für Elasticsearch ein.
Installieren Sie Logstash mit dem folgenden dnf-Befehl.
sudo dnf install logstash
Gehen Sie nach Abschluss der Installation in das Verzeichnis „/etc/logstash“ und bearbeiten Sie die JVM-Konfigurationsdatei „jvm.options“ mit dem vim-Editor.
cd /etc/logstash/
vim jvm.options
Ändern Sie die minimale/maximale Heap-Größe über die Xms- und Xmx-Konfiguration wie unten beschrieben.
-Xms512m
-Xmx512m
Speichern und schließen.
Gehen Sie als Nächstes in das Verzeichnis „/etc/logstash/conf.d“ und erstellen Sie die Konfigurationsdatei für die Beats-Eingabe namens „input-beat.conf“.
cd /etc/logstash/conf.d/
vim input-beat.conf
Fügen Sie die folgende Konfiguration ein.
input {
beats {
port => 5044
}
}
Speichern und schließen.
Erstellen Sie nun die Konfigurationsdatei ‚syslog-filter.conf‘.
vim syslog-filter.conf
Fügen Sie die folgende Konfiguration 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 schließen.
Und erstellen Sie dann die Ausgabekonfiguration für Elasticsearch 'output-elasticsearch.conf'.
vim output-elasticsearch.conf
Fügen Sie die folgende Konfiguration ein.
output {
elasticsearch { hosts => ["127.0.0.1:9200"]
hosts => "127.0.0.1:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Speichern und schließen.
Fügen Sie als Nächstes den Logstash-Dienst zum Systemstart hinzu und starten Sie den Logstash-Dienst.
systemctl enable logstash
systemctl start logstash
Der Logstash-Dienst ist aktiv und läuft, überprüfen Sie dies mit den folgenden Befehlen.
systemctl status logstash
netstat -plntu
Und Sie erhalten das Ergebnis wie folgt.
Infolgedessen läuft der logstash-Protokollversender auf dem CentOS 8-Server mit dem Standard-TCP-Port „5044“. Und die grundlegende Elastic Stack-Installation ist abgeschlossen, und wir sind bereit, unsere Protokolle an den Elastic (ELK Stack)-Server zu senden und zu überwachen.
Schritt 6 – Installieren Sie Filebeat auf dem Client
In diesem Schritt zeigen wir Ihnen, wie Sie den Filebeat auf dem Ubuntu- und CentOS-System einrichten. Wir werden einen Filebeat installieren und konfigurieren, um Protokolle von beiden Servern an den Logstash auf dem elastischen Server zu senden.
- Installieren Sie Filebeat auf CentOS 8
Fügen Sie den Elasticsearch-Schlüssel mit dem folgenden Befehl zum CentOS 8-System hinzu.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Gehen Sie nun in das Verzeichnis ‚/etc/yum.repos.d‘ und erstellen Sie die Datei ‚elasticsearch.repo‘ mit dem vim-Editor.
cd /etc/yum.repos.d/
vim elasticsearch.repo
Fügen Sie die folgende 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.
Installieren Sie nun den Filebeat mit dem untenstehenden dnf-Befehl.
sudo dnf install filebeat
Warten Sie, bis die Filebeat-Installation abgeschlossen ist.
- Installieren Sie Filebeat auf Ubuntu 18.04
Installieren Sie zunächst die apt-transport-https-Pakete.
sudo apt install apt-transport-https
Fügen Sie danach den Elasticsearch-Schlüssel und das Repository mit den folgenden Befehlen hinzu.
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
Aktualisieren Sie nun alle Repositories und installieren Sie Filebeat auf dem Ubuntu-System mit dem folgenden apt-Befehl.
sudo apt update
sudo apt install filebeat
Warten Sie, bis die Filebeat-Installation abgeschlossen ist.
- Filebeat konfigurieren
Die Filebeat-Konfiguration befindet sich im Verzeichnis „/etc/filebeat“. Wechseln Sie in das filebeat-Verzeichnis und bearbeiten Sie die Konfigurationsdatei ‚filebeat.yml‘.
cd /etc/filebeat/
vim filebeat.yml
Deaktivieren Sie nun die standardmäßige Elasticsearch-Ausgabe wie unten beschrieben.
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["127.0.0.1:9200"]
Aktivieren Sie dann die Logstash-Ausgabe und geben Sie die IP-Adresse des Logstash-Hosts an.
output.logstash:
# The Logstash hosts
hosts: ["10.5.5.25:5044"]
Speichern und schließen.
Als nächstes müssen wir Filebeat-Module aktivieren. Führen Sie den folgenden filebeat-Befehl aus, um die Liste der filebeat-Module abzurufen.
filebeat modules list
Aktivieren Sie das Modul „System“ mit dem folgenden Befehl.
filebeat modules enable system
Das Filebeat-Systemmodul wurde mit der Konfigurationsdatei „modules.d/system.yml“ aktiviert.
Bearbeiten Sie die Systemmodulkonfiguration mit dem vim-Editor.
cd /etc/filebeat/
vim modules.d/system.yml
Entkommentieren Sie den Pfad der Syslog-Datei und der SSH-Autorisierungsdatei.
Für das CentOS-System:
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/messages"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/secure"]
Für das Ubuntu-System:
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/syslog"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/auth.log"]
Speichern und schließen.
Fügen Sie nun den Filebeat-Dienst zum Systemstart hinzu und starten Sie den Dienst.
systemctl enable filebeat
systemctl start filebeat
Der Filebeat-Dienst ist aktiv und läuft, Sie können dies mit dem folgenden Befehl überprüfen.
systemctl status filebeat
Und Ihnen wird das Ergebnis wie folgt angezeigt.
Unten ist das Ergebnis vom CentOS 8-Server.
Und unten ist vom Ubuntu Server 18.04.
Als Ergebnis wurde die Verbindung zwischen filebeat und dem Logstash-Dienst auf der Elastic-Stack-Server-IP-Adresse „10.5.5.12“ hergestellt.
Schritt 7 – Testen
Öffnen Sie Ihren Webbrowser und geben Sie den Domänennamen der Elastic Stack-Installation in die Adressleiste ein.
http://elk.hakase-labs.io/
Melden Sie sich jetzt beim Kibana-Dashboard mit dem Basisauthentifizierungskonto an, das Sie erstellt haben.
Und Sie erhalten das Kibana-Dashboard wie folgt.
Stellen Sie nun eine Verbindung zu den Elasticsearch-Indexdaten her, die automatisch erstellt wurden, nachdem der Filebeat mit dem Logstash verbunden wurde. Klicken Sie auf 'Mit Ihrem Elasticsearch-Index verbinden ' Link.
Erstellen Sie die Datei „filebeat-* ' Indexmuster und klicken Sie auf 'Nächster Schritt ' Schaltfläche.
Wählen Sie als Filternamen „@timestamp ' filtern und auf 'Indexmuster erstellen klicken '.
Und die 'filebeat-* ' Indexmuster erstellt wurde, klicken Sie auf 'Entdecken ' Menü auf der linken Seite.
Und Sie erhalten die Protokolldaten von Filebeat-Clients wie folgt.
Protokolle für das CentOS 8-System.
Protokoll für das Ubuntu-System.
Als Ergebnis wurden die im Filebeat-Systemmodul definierten Protokolldaten an den Elastic-Stack-Server gesendet.
Und die Elastic Stack-Installation und -Konfiguration auf CentOS 8 wurde erfolgreich abgeschlossen.