Elastischer Stack, allgemein bekannt als ELK-Stack , es ist eine Gruppe von Open-Source-Produkten wie Elasticsearch , Logstash und Kibana . Elastic Stack wird von der Firma Elastic entwickelt und gepflegt. Mit Elastic Stack kann man Logstash mit Systemprotokollen füttern, es ist eine Datenerfassungs-Engine, die die Protokolle oder Daten aus allen Quellen akzeptiert und Protokolle normalisiert und die Protokolle dann zur Analyse an Elasticsearch weiterleitet , Indizierung , Suche und speichern und schließlich kann man mit Kibana die visualisierten Daten darstellen, mit Kibana können wir auch interaktive Grafiken und Diagramme basierend auf Benutzeranfragen erstellen.
In diesem Artikel zeigen wir, wie Sie einen Multi-Node-Elastic-Stack-Cluster (ELK Stack) auf RHEL 8-/CentOS 8-Servern einrichten. Im Folgenden finden Sie Details zu meinem Elastic Stack-Cluster:
Elasticsearch:
- Drei Server mit mindestens RHEL 8 / CentOS 8
- IPs &Hostname – 192.168.56.40 (elasticsearch1.linuxtechi. local), 192.168.56.50 (elasticsearch2.linuxtechi. local), 192.168.56.60 (elasticsearch3.linuxtechi. local)
Logstash:
- Zwei Server mit mindestens RHEL 8 / CentOS 8
- IPs &Hostname – 192.168.56.20 (logstash1.linuxtechi. local) , 192.168.56.30 (logstash2.linuxtechi. local)
Kibana:
- Ein Server mit mindestens RHEL 8 / CentOS 8
- Hostname – kibana.linuxtechi.local
- IP – 192.168.56.10
Dateischlag:
- Ein Server mit mindestens CentOS 7
- IP &Hostname – 192.168.56.70 (Webserver)
Beginnen wir mit der Einrichtung des Elasticsearch-Clusters,
Elasticsearch-Cluster mit 3 Knoten einrichten
Wie ich bereits erwähnt habe, habe ich Knoten für den Elasticsearch-Cluster behalten, melden Sie sich bei jedem Knoten an, legen Sie den Hostnamen fest und konfigurieren Sie yum/dnf-Repositories.
Verwenden Sie den folgenden hostnamectl-Befehl, um den Hostnamen auf den jeweiligen Knoten festzulegen,
[[email protected] ~]# hostnamectl set-hostname "elasticsearch1.linuxtechi. local"[[email protected] ~]# exec bash[[email protected] ~]#[[email protected] ~]# hostnamectl set -hostname "elasticsearch2.linuxtechi. local"[[email protected] ~]# exec bash[[email protected] ~]#[[email protected] ~]# hostnamectl set-hostname "elasticsearch3.linuxtechi. local"[[email protected ] ~]# exec bash[[email protected] ~]#
Für CentOS 8 System müssen wir kein OS-Paket-Repository konfigurieren und für RHEL 8 Server, wenn Sie ein gültiges Abonnement haben und es dann bei Red Hat abonniert haben, um das Paket-Repository zu erhalten. Falls Sie das lokale yum/dnf-Repository für Betriebssystempakete konfigurieren möchten, beziehen Sie sich auf die folgende URL:
So richten Sie ein lokales Yum/DNF-Repository auf einem RHEL 8-Server mithilfe einer DVD oder einer ISO-Datei ein
Konfigurieren Sie das Elasticsearch-Paket-Repository auf allen Knoten, erstellen Sie eine Datei elastic.repo Datei im Ordner /etc/yum.repos.d/ mit dem folgenden Inhalt
~]# vi /etc/yum.repos.d/elastic.repo[elasticsearch-7.x]name=Elasticsearch-Repository für 7.x-Paketebaseurl=https://artifacts.elastic.co/packages/7. x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md
Speichern und beenden Sie die Datei
Verwenden Sie den folgenden rpm-Befehl auf allen drei Knoten, um den öffentlichen Signaturschlüssel von Elastic zu importieren
~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Fügen Sie die folgenden Zeilen in der Datei /etc/hosts auf allen drei Knoten hinzu,
192.168.56.40 elasticsearch1.linuxtechi.local192.168.56.50 elasticsearch2.linuxtechi.local192.168.56.60 elasticsearch3.linuxtechi.local
Installieren Sie Java auf allen drei Knoten mit dem Befehl yum / dnf,
[[email protected] ~]# dnf install java-openjdk -y[[email protected] ~]# dnf install java-openjdk -y[[email protected] ~]# dnf install java-openjdk -yInstallieren Sie Elasticsearch mit dem Befehl below dnf auf allen drei Knoten,
[[email protected] ~]# dnf install elasticsearch -y[[email protected] ~]# dnf install elasticsearch -y[[email protected] ~]# dnf install elasticsearch -yHinweis: Falls die Betriebssystem-Firewall aktiviert ist und in jedem Elasticsearch-Knoten ausgeführt wird, lassen Sie die folgenden Ports mit dem folgenden Befehl firewall-cmd zu,
~]# firewall-cmd --permanent --add-port=9300/tcp~]# firewall-cmd --permanent --add-port=9200/tcp~]# firewall-cmd --reloadKonfigurieren Sie Elasticsearch, bearbeiten Sie die Datei „/etc/elasticsearch/elasticsearch.yml ” auf allen drei Knoten und fügen Sie Folgendes hinzu:
~]# vim /etc/elasticsearch/elasticsearch.yml…………………………………………cluster.name:opn-clusternode.name:elasticsearch1.linuxtechi.localnetwork.host:192.168 .56.40http.port:9200discovery.seed_hosts:["elasticsearch1.linuxtechi.local", "elasticsearch2.linuxtechi.local", "elasticsearch3.linuxtechi.local"]cluster.initial_master_nodes:["elasticsearch1.linuxtechi.local", "elasticsearch2 .linuxtechi.local“, „elasticsearch3.linuxtechi.local“]………………………………………………Hinweis: Fügen Sie auf jedem Knoten den korrekten Hostnamen im Parameter node.name und die IP-Adresse im Parameter network.host hinzu, und andere Parameter bleiben gleich.
Starten und aktivieren Sie nun den Elasticsearch-Dienst auf allen drei Knoten mit dem folgenden systemctl-Befehl,
~]# systemctl daemon-reload~]# systemctl enable elasticsearch.service~]# systemctl start elasticsearch.serviceVerwenden Sie den folgenden Befehl „ss“, um zu überprüfen, ob der Elasticsearch-Knoten mit dem Abhören des Ports 9200 beginnt,
[[email protected] ~]# ss -tunlp | grep 9200tcp LISTEN 0 128 [::ffff:192.168.56.40]:9200 *:* Benutzer:(("java",pid=2734,fd=256)) > [[email protected]Verwenden Sie die folgenden Curl-Befehle, um den Status des Elasticsearch-Clusters zu überprüfen
[[email protected] ~]# curl http://elasticsearch1.linuxtechi.local:9200[[email protected] ~]# curl -X GET http://elasticsearch2.linuxtechi.local:9200/_cluster/health ?hübschDie Ausgabe des obigen Befehls würde in etwa so aussehen,
Die obige Ausgabe bestätigt, dass wir erfolgreich einen Elasticsearch-Cluster mit 3 Knoten erstellt haben und der Status des Clusters ebenfalls grün ist.
Hinweis: Wenn Sie die JVM-Heap-Größe ändern möchten, müssen Sie die Datei „/etc/elasticsearch/jvm.options bearbeiten ” und ändern Sie die folgenden Parameter, die zu Ihrer Umgebung passen,
- -Xms1g
- -Xmx1g
Kommen wir nun zu den Logstash-Knoten,
Logstash installieren und konfigurieren
Führen Sie die folgenden Schritte auf beiden Logstash-Knoten aus,
Melden Sie sich bei beiden Knoten an und legen Sie den Hostnamen mit dem folgenden Befehl hostnamectl fest:
[[email protected] ~]# hostnamectl set-hostname "logstash1.linuxtechi.local"[[email protected] ~]# exec bash[[email protected] ~]#[[email protected] ~]# hostnamectl set -hostname "logstash2.linuxtechi.local"[[email protected] ~]# exec bash[[email protected] ~]#
Fügen Sie die folgenden Einträge in der Datei /etc/hosts in beiden Logstash-Knoten hinzu
~]# vi /etc/hosts192.168.56.40 elasticsearch1.linuxtechi.local192.168.56.50 elasticsearch2.linuxtechi.local192.168.56.60 elasticsearch3.linuxtechi.local
Speichern und beenden Sie die Datei
Konfigurieren Sie das Logstash-Repository auf beiden Knoten und erstellen Sie eine Dateilogstash.repo unter dem Ordner /ete/yum.repos.d/ mit folgendem Inhalt,
~]# vi /etc/yum.repos.d/logstash.repo[elasticsearch-7.x]name=Elasticsearch-Repository für 7.x-Paketebaseurl=https://artifacts.elastic.co/packages/7. x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md
Speichern und beenden Sie die Datei, führen Sie den folgenden RPM-Befehl aus, um den Signaturschlüssel zu importieren
~]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Installieren Sie Java OpenJDK auf beiden Knoten mit dem folgenden dnf-Befehl,
~]# dnf install java-openjdk -y
Führen Sie den folgenden dnf-Befehl auf beiden Knoten aus, um Logstash zu installieren,
[[email protected] ~]# dnf install logstash -y[[email protected] ~]# dnf install logstash -y
Konfigurieren Sie nun Logstash, führen Sie die folgenden Schritte auf beiden Logstash-Knoten aus,
Erstellen Sie eine Logstash-Konf-Datei, dafür kopieren wir zuerst die Beispiel-Logstash-Datei unter „/etc/logstash/conf.d/“
# cd /etc/logstash/# cp logstash-sample.conf conf.d/logstash.conf
Bearbeiten Sie die conf-Datei und aktualisieren Sie den folgenden Inhalt,
# vi conf.d/logstash.confinput { beats { port => 5044 }}output { elasticsearch { hosts => ["http://elasticsearch1.linuxtechi.local:9200", "http://elasticsearch2. linuxtechi.local:9200", "http://elasticsearch3.linuxtechi.local:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+ YYYY.MM.dd}" #user => "elastic" #password => "changeme" }}
Geben Sie im Ausgabeabschnitt im Hosts-Parameter den FQDN aller drei Elasticsearch-Knoten an, andere Parameter lassen Sie unverändert.
Erlauben Sie den Logstash-Port „5044“ in der Betriebssystem-Firewall mit dem folgenden Firewall-cmd-Befehl,
~ # firewall-cmd --permanent --add-port=5044/tcp~ # firewall-cmd –neu laden
Starten und aktivieren Sie nun den Logstash-Dienst, führen Sie die folgenden systemctl-Befehle auf beiden Knoten aus
~]# systemctl start logstash~]# systemctl eanble logstash
Verwenden Sie den folgenden ss-Befehl, um zu überprüfen, ob der Logstash-Dienst beginnt, auf 5044 zu lauschen,
[[email protected] ~]# ss -tunlp | grep 5044tcp LISTEN 0 128 *:5044 *:* Benutzer:(("java",pid=2416,fd=96)) [[email protect]Die obige Ausgabe bestätigt, dass Logstash erfolgreich installiert und konfiguriert wurde. Kommen wir zur Kibana-Installation.
Kibana installieren und konfigurieren
Melden Sie sich beim Kibana-Knoten an und legen Sie den Hostnamen mit hostnamectl fest Befehl,
[[email protected] ~]# hostnamectl set-hostname "kibana.linuxtechi.local"[[email protected] ~]# exec bash[[email protected] ~]#Bearbeiten Sie die Datei /etc/hosts und fügen Sie die folgenden Zeilen hinzu
192.168.56.40 elasticsearch1.linuxtechi.local192.168.56.50 elasticsearch2.linuxtechi.local192.168.56.60 elasticsearch3.linuxtechi.localRichten Sie das Kibana-Repository wie folgt ein:
[[email protected] ~]# vi /etc/yum.repos.d/kibana.repo[elasticsearch-7.x]name=Elasticsearch-Repository für 7.x-Paketebaseurl=https://artifacts.elastic.co /packages/7.x/yumgpgcheck=1gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearchenabled=1autorefresh=1type=rpm-md[[email protected] ~]# rpm --import https:// artefacts.elastic.co/GPG-KEY-elasticsearchFühren Sie den folgenden dnf-Befehl aus, um Kibana zu installieren,
[[email protected] ~]# yum install kibana -yKonfigurieren Sie Kibana, indem Sie die Datei „/etc/kibana/kibana.yml bearbeiten ”
[[email protected] ~]# vim /etc/kibana/kibana.yml…………server.host:„kibana.linuxtechi.local“server.name:„kibana.linuxtechi.local“elasticsearch.hosts:["http://elasticsearch1.linuxtechi.local:9200", "http://elasticsearch2.linuxtechi.local:9200", "http://elasticsearch3.linuxtechi.local:9200"]…………Kibana-Dienst starten und aktivieren
[[email protected] ~]# systemctl start kibana[[email protected] ~]# systemctl enable kibanaKibana-Port „5601“ in der Betriebssystem-Firewall zulassen,
[[email protected] ~]# firewall-cmd --permanent --add-port=5601/tcpsuccess[[email protected] ~]# firewall-cmd --reloadsuccess[[email protected] ~]#Greifen Sie über die folgende URL auf das Kibana-Portal / die GUI zu:
http://kibana.linuxtechi.local:5601
Über das Dashboard können wir auch unseren Elastic Stack-Clusterstatus überprüfen
Dies bestätigt, dass wir den Elastic Stack-Cluster mit mehreren Knoten erfolgreich auf RHEL 8/CentOS 8 eingerichtet haben.
Lassen Sie uns nun einige Protokolle von anderen Linux-Servern per Filebeat an Logstash-Knoten senden. In meinem Fall habe ich einen CentOS 7-Server. Ich werde alle wichtigen Protokolle dieses Servers per Filebeat an Logstash senden.
Melden Sie sich beim CentOS 7-Server an und installieren Sie das Filebeat-Paket mit dem folgenden RPM-Befehl,
[[email protected] ~]# rpm -ivh https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.3.1-x86_64.rpm Abrufen von https://artifacts.elastic.co/downloads /beats/filebeat/filebeat-7.3.1-x86_64.rpmVorbereitung... ################################# [100%]Aktualisierung/Installation... 1:filebeat-7.3.1-1 ############################### ## [100 %][[E-Mail geschützt] ~]#Bearbeiten Sie die Datei /etc/hosts und fügen Sie die folgenden Einträge hinzu:
192.168.56.20 logstash1.linuxtechi.local192.168.56.30 logstash2.linuxtechi.localKonfigurieren Sie nun den Filebeat so, dass er Protokolle mithilfe der Lastausgleichstechnik an Logstash-Knoten senden kann, bearbeiten Sie die Datei „/etc/filebeat/filebeat.yml “ und fügen Sie die folgenden Parameter hinzu,
Unter „filebeat.inputs: ’ Abschnitt ändern ‘enabled:false ‘ zu ‘aktiviert:wahr ‘ und unter den „Pfade ”-Parameter geben die Speicherort-Protokolldateien an, die wir an logstash senden können. Kommentieren Sie im Output-Elasticsearch-Abschnitt „output.elasticsearch aus “ und Host Parameter. Entfernen Sie im Logstash-Ausgabeabschnitt die Kommentare für „output.logstash: “ und „Hosts: “ und fügen Sie die beiden Logstash-Knoten in den Hosts-Parametern sowie „loadbalance:true hinzu “.
[[email protected] ~]# vi /etc/filebeat/filebeat.yml……………………….filebeat.inputs:- type:log enabled:true paths: - /var/log/messages - /var/log/dmesg - /var/log/maillog - /var/log/boot.log#output.elasticsearch: # hosts:["localhost:9200"]output.logstash: hosts:["logstash1.linuxtechi. local:5044", "logstash2.linuxtechi.local:5044"] Loadbalance:true………………………………………Starten und aktivieren Sie den Filebeat-Dienst mit den folgenden systemctl-Befehlen,
[[email protected] ~]# systemctl start filebeat[[email protected] ~]# systemctl enable filebeatGehen Sie jetzt zur Kibana-GUI und überprüfen Sie, ob neue Indizes sichtbar sind oder nicht,
Wählen Sie in der linken Seitenleiste die Option „Verwaltung“ und klicken Sie dann unter „Elasticsearch“ auf „Indexverwaltung“,
Wie wir oben sehen können, sind die Indizes jetzt sichtbar, lassen Sie uns ein Indexmuster erstellen,
Klicken Sie in der Kibana-Sektion auf „Indexmuster“. Sie werden aufgefordert, ein neues Muster zu erstellen. Klicken Sie auf „Indexmuster erstellen“. “ und spezifizieren Sie den Pattern-Namen als „filebeat ”
Klicken Sie auf Nächster Schritt
Wählen Sie „Zeitstempel“. ” als Zeitfilter für Indexmuster und klicken Sie dann auf „Indexmuster erstellen“
Klicken Sie jetzt auf Entdecken, um das Filebeat-Indexmuster in Echtzeit zu sehen,
Dies bestätigt, dass der Filebeat-Agent erfolgreich konfiguriert wurde und wir Echtzeitprotokolle auf dem Kibana-Dashboard sehen können.
Das ist alles aus diesem Artikel. Bitte zögern Sie nicht, Ihr Feedback und Ihre Kommentare zu teilen, falls diese Schritte Ihnen helfen, einen Elastic Stack-Cluster mit mehreren Knoten auf einem RHEL 8-/CentOS 8-System einzurichten.