Der ELK-Stack ist auch als Elastic-Stack bekannt und besteht aus vier Open-Source-Projekten:Elasticsearch, Logstash, Kibana und Beats. Es hilft Ihnen, alle Ihre Protokolle an einem Ort zu speichern, und bietet die Möglichkeit, Daten oder Probleme zu analysieren und zu visualisieren, indem die Ereignisse zu einem bestimmten Zeitpunkt korreliert werden.
Diese Anleitung hilft Ihnen bei der Installation des ELK-Stacks auf RHEL 8.
Komponenten
Elasticsearch – Eine Open-Source-Volltextsuchmaschine. Es speichert eingehende Protokolle von Logstash und bietet die Möglichkeit, die Protokolle/Daten in Echtzeit zu durchsuchen
Logstash – Führt die Datenverarbeitung (Sammeln, Anreichern und Transformieren) von eingehenden Protokollen durch, die von Beats (Forwarder) gesendet werden, und sendet sie an Elasticsearch
Kibana – Bietet Visualisierung von Daten oder Protokollen von Elasticsearch.
Beats – Wird auf Client-Rechnern installiert, sammelt und sendet Protokolle über das Beats-Protokoll an Logstash.
Umgebung
Um einen voll funktionsfähigen ELK-Stack zu haben, bräuchten wir zwei Maschinen, um die Erfassung von Protokollen zu testen.
Hostname | Betriebssystem | IP-Adresse | Zweck |
---|---|---|---|
elk.itzgeek.local | RHEL 8 | 192.168.1.10 | ELK-Stapel |
client.itzgeek.local | CentOS 7 | 192.168.1.20 | Client-Rechner (Filebeat) |
Voraussetzungen
Installieren Sie Java
Da Elasticsearch auf Java basiert, muss entweder OpenJDK oder Oracle JDK auf Ihrem Computer installiert sein.
LESEN: So installieren Sie Java auf RHEL 8
Hier verwende ich OpenJDK 1.8.
yum -y Java installieren
Überprüfen Sie die Java-Version.
Java-Version
Ausgabe:
openjdk-Version „1.8.0_212“OpenJDK-Laufzeitumgebung (Build 1.8.0_212-b04)OpenJDK 64-Bit-Server-VM (Build 25.212-b04, gemischter Modus)
ELK-Repository konfigurieren
Importieren Sie den Elastic-Signaturschlüssel.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Richten Sie das Elasticsearch-Repository sowohl auf dem ELK-Server als auch auf dem Client ein.
cat </etc/yum.repos.d/elastic.repo[elasticsearch-7.x]name=Elasticsearch-Repository für 7.x-Paketebaseurl=https://artifacts.elastic.co/packages/oss -7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-mdEOF
Elasticsearch installieren und konfigurieren
Elasticsearch ist Open Source, die Volltextsuchmaschine bietet eine verteilte Suche und Analyse in Echtzeit mit der RESTful-Webschnittstelle. Elasticsearch speichert alle Daten, die von Logstash gesendet werden, und zeigt sie auf Benutzeranfrage über die Webschnittstelle (Kibana) an.
Installieren Sie Elasticsearch.
yum install -y elasticsearch-oss
Bearbeiten Sie die Konfigurationsdatei von Elasticsearch in
vi /etc/elasticsearch/elasticsearch.yml
Legen Sie den Clusternamen, den Knotennamen und die lauschende IP-Adresse gemäß Ihrer Umgebung fest.
cluster.name:elkstack node.name:elk.itzgeek.local network.host:192.168.1.10
Wenn Sie eine lauschende IP-Adresse festlegen, müssen Sie Seed-Hosts und anfängliche Master-Knoten definieren.
discovery.seed_hosts:["elk.itzgeek.local "]cluster.initial_master_nodes:["elk.itzgeek.local "]
Konfigurieren Sie Elasticsearch so, dass es während des Systemstarts gestartet wird.
systemctl daemon-reloadsystemctl enable elasticsearchsystemctl start elasticsearch
Verwenden Sie CURL, um zu überprüfen, ob Elasticsearch auf die Abfragen antwortet.
curl -X GET http://192.168.1.10:9200
Ausgabe:
{ „name“ :„elk.itzgeek.local“, „cluster_name“ :„elkstack“, „cluster_uuid“ :„yws_6oYKS965bZ7GTh0e6g“, „version“ :{ „number“ :„7.2.0“, „build_flavor“ :„oss“, „build_type“ :„rpm“, „build_hash“ :„508c38a“, „build_date“ :„2019-06-20T15:54:18.811730Z“, „build_snapshot“ :false, „lucene_version“ :„8.0 .0", "Minimum_wire_compatibility_version" :"6.8.0", "Minimum_index_compatibility_version" :"6.0.0-beta1" }, "tagline" :"You Know, for Search"}
Überprüfen Sie den Zustand des Clusters, indem Sie den folgenden Befehl ausführen.
curl -XGET '192.168.1.10:9200/_cluster/health?pretty'
Ausgabe:Der Clusterstatus sollte grün sein.
{ "cluster_name" :"elkstack", "status" :"grün ", "timed_out" :false, "number_of_nodes" :1, "number_of_data_nodes" :1, "active_primary_shards" :0, "active_shards" :0, "relocating_shards" :0, "initializing_shards" :0, "unassigned_shards" :0, "delayed_unassigned_shards" :0, "number_of_pending_tasks" :0, "number_of_in_flight_fetch" :0, "task_max_waiting_in_queue_millis" :0, "active_shards_percent_as_number" :100.0}
Logstash installieren und konfigurieren
Logstash ist ein Open-Source-Tool zum Verwalten von Protokollen. Es sammelt die Protokolle, analysiert sie und speichert sie auf Elasticsearch. Über 160+ Plug-ins sind für Logstash verfügbar, die die Möglichkeit bieten, die verschiedenen Arten von Ereignissen ohne zusätzliche Arbeit zu verarbeiten.
Installieren Sie das Logstash-Paket.
yum -y install logstash-oss
Die Logstash-Konfiguration finden Sie unter /etc/logstash/conf.d/
.
Die Logstash-Konfigurationsdatei besteht aus drei Abschnitten, nämlich Eingabe, Filter und Ausgabe. Alle drei Abschnitte können in einer einzigen Datei gefunden werden oder getrennte Dateien enden mit .conf.
Ich empfehle Ihnen, eine einzelne Datei zum Platzieren von Eingabe-, Filter- und Ausgabeabschnitten zu verwenden.
vi /etc/logstash/conf.d/beats.conf
Im Eingabebereich konfigurieren wir Logstash so, dass es Port 5044 auf eingehende Protokolle von den Beats (Forwarder) überwacht, die auf Client-Rechnern installiert sind.
input { beats { port => 5044 }}
Im Filterabschnitt werden wir Grok verwenden, um die Protokolle zu parsen, bevor sie an Elasticsearch gesendet werden.
Der folgende Grok-Filter sucht nach dem syslog beschriftete Protokolle und versucht, sie zu parsen, um einen strukturierten Index zu erstellen. Dieser Filter ist sehr nützlich, nur um Syslog-Meldungen (/var/log/messages) zu überwachen.
filter { if [type] =="syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm :ss", "MMM tt HH:mm:ss" ] } }}
Weitere Filtermuster finden Sie auf der Grokdebugger-Seite.
Im Ausgabeabschnitt definieren wir den Ort, an dem die Protokolle gespeichert werden sollen, offensichtlich ein Elasticsearch-Knoten.
output { elasticsearch { hosts => ["192.168.1.10:9200"] index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" }}
Starten und aktivieren Sie nun den Logstash-Dienst.
systemctl logstash startensystemctl logstash aktivieren
Warten Sie eine Minute, damit Logstash starten kann, und führen Sie dann den folgenden Befehl aus, um zu überprüfen, ob Port 5044 überwacht wird.
netstat -antup | grep -i 5044
Ausgabe:
tcp6 0 0 :::5044 :::* LISTEN 31014/java
Sie können Probleme mit Logstash mithilfe von Protokollen beheben.
cat /var/log/logstash/logstash-plain.log
Kibana installieren und konfigurieren
Kibana bietet die Visualisierung von Protokollen, die in Elasticsearch gespeichert sind. Installieren Sie Kibana mit dem folgenden Befehl.
yum -y installiere kibana-oss
Bearbeiten Sie die Datei kibana.yml.
vi /etc/kibana/kibana.yml
Standardmäßig lauscht Kibana auf localhost, was bedeutet, dass Sie von externen Computern nicht auf Kibana zugreifen können. Um dies zuzulassen, bearbeiten Sie die folgende Zeile und geben Sie die IP Ihres ELK-Servers an.
server.host:"0.0.0.0 "
Entkommentieren Sie die folgende Zeile und aktualisieren Sie sie mit der URL der Elasticsearch-Instanz.
elasticsearch.hosts:["http://192.168.1.10:9200 "]
Kibana beim Systemstart starten und aktivieren.
systemctl startet Kibanasystemctl aktiviert Kibana
Überprüfen Sie, ob Kibana auf Port 5601 lauscht.
netstat -antup | grep -i 5601
Ausgabe:
tcp 0 0 0.0.0.0:5601 0.0.0.0:* LISTEN 3631/Knoten
Firewall
Konfigurieren Sie eine Firewall auf dem ELK-Server, um die Protokolle von Client-Computern zu erhalten.
5044 – Damit Logstash die Protokolle erhält
5061 – Zugriff auf Kibana von externen Rechnern aus.
firewall-cmd --permanent --add-port=5044/tcpfirewall-cmd --permanent --add-port=5601/tcpfirewall-cmd --reload
Als Nächstes werden wir Beats konfigurieren, um die Protokolle an den Logstash-Server zu senden.
Filebeat installieren und konfigurieren
Es sind vier Beats-Clients verfügbar
- Packetbeat – Netzwerkpaketdaten analysieren.
- Filebeat – Echtzeit-Einblick in Protokolldaten.
- Topbeat – Gewinnen Sie Erkenntnisse aus Infrastrukturdaten.
- Metrikbeat – Metriken an Elasticsearch senden.
Richten Sie das Elastic-Repository auf dem Clientcomputer ein, um das Filebeat-Paket abzurufen.
Installieren Sie Filebeat mit dem folgenden Befehl.
yum -y install filebeat
Die Filebeat-Konfigurationsdatei ist im YAML-Format, was bedeutet, dass die Einrückung sehr wichtig ist. Stellen Sie sicher, dass Sie die gleiche Anzahl von Leerzeichen wie im Leitfaden verwenden.
Filebeat-Konfigurationsdatei bearbeiten.
vi /etc/filebeat/filebeat.yml
Kommentieren Sie den Abschnitt output.elasticsearch: aus da wir Protokolle nicht direkt in Elasticsearch speichern werden.
#-------------------------- Elasticsearch-Ausgabe ------------------ ------------# output.elasticsearch:# Array von Hosts, zu denen eine Verbindung hergestellt werden soll. # hosts:["localhost:9200"] # Optionales Protokoll und grundlegende Authentifizierungsdaten. #Protokoll:"https" #Benutzername:"Elastic" #Passwort:"changeme"
Suchen Sie nun die Zeile output.logstash und ändern Sie die Einträge wie unten. Dieser Abschnitt definiert filebeat, um Protokolle an den Logstash-Server 192.168.1.10 zu senden auf Port 5044 .
Oben auf /etc/filebeat/filebeat.yml
, würden Sie den Abschnitt Prospektoren sehen. Hier müssen Sie angeben, welche Protokolle an Logstash gesendet werden sollen.
Jeder Prospektor beginnt mit einem – Zeichen.
Hier werden wir filebeat so konfigurieren, dass Systemprotokolle /var/log/messages
gesendet werden zum Logstash-Server. Ändern Sie dazu den vorhandenen Prospektor unter Pfade Abschnitt wie unten gezeigt.
Starten Sie den Dienst neu.
systemctl filebeat neu startensystemctl filebeat aktivieren
Zugriff auf Kibana
Greifen Sie über die folgende URL auf Kibana zu.
http://Ihre-IP-Adresse:5601/Sie würden die Homepage von Kibana erhalten. Klicken Sie auf Selbst erkunden .
Bei Ihrem ersten Zugriff müssen Sie den Filebeat-Index zuordnen. Gehen Sie zu Verwaltung>> Indexmuster>> Indexmuster erstellen .
Geben Sie Folgendes in das Indexmuster ein Feld.
filebeat-*Sie sollten mindestens einen Filebeat-Index wie unten sehen. Klicken Sie auf Nächster Schritt .
Wählen Sie @timestamp aus und klicken Sie dann auf Indexmuster erstellen .
@Zeitstempel
Überprüfen Sie Ihre Indexmuster und ihre Zuordnungen.
Klicken Sie nun auf Entdecken um die Protokolle anzuzeigen und Suchanfragen durchzuführen.
Schlussfolgerung
Das ist alles. Sie haben erfolgreich gelernt, wie man ELK Stack auf RHEL 8 installiert. Bitte teilen Sie uns Ihr Feedback im Kommentarbereich mit.