Schreiben Sie am Anfang Dieser Artikel behandelt nur die Bereitstellung von ELK 7.3.0! Bereitstellungsumgebung:
ELK-Lösung zur verteilten Clusterbereitstellung Die Speicherberechtigung des elasticsearch-Benutzers unter Linux ist zu gering. Es werden mindestens 262144 benötigt. Es wird eine Fehlermeldung angezeigt (max virtual memory areas vm.max_map_count [65530] is too low, increase to minimum [262144]). Ändern Sie daher zunächst die Systemkonfiguration. # Ändern Sie die Konfiguration sysctl.conf vi /etc/sysctl.conf # Fügen Sie die folgende Konfiguration hinzu: vm.max_map_count=262144 # Neu laden: sysctl -p # Starten Sie Elasticsearch abschließend neu, damit es erfolgreich startet. Die Umgebung wird mit Docker bereitgestellt. Um Docker-Befehle bequemer verwenden zu können, installieren wir das Autovervollständigungs-Plugin bash-completion: # Installieren Sie das abhängige Tool bash-complete yum install -y Bash-Vervollständigung Quelle /usr/share/bash-completion/completions/docker Quelle /usr/share/bash-completion/bash_completion Bereitstellungsreihenfolge: ES --> Kibana --> Logstash --> Filebeat Bereitstellung von ElasticSearch 7.3.0 Bereitstellung des Masterknotens Erstellen Sie Konfigurationsdateien und Datenspeicherverzeichnisse mkdir -p {/mnt/es1/master/data,/mnt/es1/master/logs} vim /mnt/es1/master/conf/es-master.yml es-master.yml-Konfiguration # Clustername cluster.name: es-cluster #KnotennameKnoten.name: es-master # Ob es ein Masterknoten werden kann.ode.master: true # Ob dem Knoten das Speichern von Daten erlaubt werden soll, standardmäßig aktiviert node.data: false # Netzwerkbindung network.host: 0.0.0.0 # Legen Sie den HTTP-Port für externe Dienste fest http.port: 9200 # Stellen Sie den TCP-Port für die Kommunikation zwischen Knoten ein transport.port: 9300 # Cluster-Erkennung discovery.seed_hosts: – 172.17.0.2:9300 – 172.17.0.3:9301 # Geben Sie manuell den Namen oder die IP-Adresse aller Knoten an, die Masterknoten werden können. Diese Konfigurationen werden bei der ersten Wahl cluster.initial_master_nodes berechnet: – 172.17.0.2 # Unterstützt domänenübergreifenden Zugriff http.cors.enabled: true http.cors.allow-origin: "*" # Sicherheitsauthentifizierung xpack.security.enabled: false #http.cors.allow-headers: "Autorisierung" bootstrap.memory_lock: falsch bootstrap.system_call_filter: falsch #Domänenübergreifende Probleme lösen#http.cors.enabled: true #http.cors.allow-origin: "*" #http.cors.allow-methods: OPTIONEN, HEAD, GET, POST, PUT, LÖSCHEN #http.cors.allow-headers: "X-Angefordert-Mit, Inhaltstyp, Inhaltslänge, X-Benutzer" Das Abrufen des Bildes wird etwas langsam sein, also haben Sie Geduld! # Ziehen Sie das Image. Sie können den Container direkt erstellen und diesen Schritt ignorieren. docker pull elasticsearch:7.3.0 # Container erstellen## Ordnen Sie 5601 dem für Kibanadocker reservierten Port zu. run -d -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -p 9200:9200 -p 9300:9300 -p 5601:5601 \ -v /mnt/es1/master/conf/es-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mnt/es1/master/data:/usr/share/elasticsearch/data \ -v /mnt/es1/master/logs:/usr/share/elasticsearch/logs \ -v /etc/lokaleZeit:/etc/lokaleZeit \ --name es-master elasticsearch:7.3.0 /etc/localtime:/etc/localtime: Die Host- und Containerzeit sind synchronisiert. Bereitstellen vom Knoten aus Erstellen Sie Konfigurationsdateien und Datenspeicherverzeichnisse mkdir -p {/mnt/es1/slave1/data,/mnt/es1/slave1/logs} vim /mnt/es1/slave1/conf/es-slave1.yml es-slave1.yml-Konfiguration # Clustername cluster.name: es-cluster #KnotennameKnoten.name: es-slave1 # Ob es ein Masterknoten werden kann.ode.master: true # Ob dem Knoten das Speichern von Daten erlaubt werden soll, standardmäßig aktiviert node.data: true # Netzwerkbindung network.host: 0.0.0.0 # Legen Sie den HTTP-Port für externe Dienste fest http.port: 9201 # Stellen Sie den TCP-Port für die Kommunikation zwischen Knoten ein transport.port: 9301 # Cluster-Erkennung discovery.seed_hosts: – 172.17.0.2:9300 – 172.17.0.3:9301 # Geben Sie manuell den Namen oder die IP-Adresse aller Knoten an, die Masterknoten werden können. Diese Konfigurationen werden bei der ersten Wahl cluster.initial_master_nodes berechnet: – 172.17.0.2 # Unterstützt domänenübergreifenden Zugriff http.cors.enabled: true http.cors.allow-origin: "*" # Sicherheitsauthentifizierung xpack.security.enabled: false #http.cors.allow-headers: "Autorisierung" bootstrap.memory_lock: falsch bootstrap.system_call_filter: falsch Das Abrufen des Bildes wird etwas langsam sein, also haben Sie Geduld! # Ziehen Sie das Image. Sie können den Container direkt erstellen und diesen Schritt ignorieren. docker pull elasticsearch:7.3.0 # Container erstellen docker run -d -e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ -p 9201:9200 -p 9301:9300 \ -v /mnt/es1/slave1/conf/es-slave1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /mnt/es1/slave1/data:/usr/share/elasticsearch/data \ -v /mnt/es1/slave1/logs:/usr/share/elasticsearch/logs \ -v /etc/lokaleZeit:/etc/lokaleZeit \ --name es-slave1 elasticsearch:7.3.0 Ändern Sie die Konfiguration und starten Sie den Container neu # Zeigen Sie die IP des Master- und Slave-Containers an Docker-Inspektion ES-Master Docker inspizieren es-Slave1 Ändern Sie die discovery.seed_hosts und cluster.initial_master_nodes in den ES-Konfigurationsdateien es-master.yml und es-slave1.yml auf die entsprechende IP! Starten Sie den Container neu: Docker startet ES-Master neu Docker startet es-Slave1 neu # ES-Protokolle anzeigen docker logs -f --tail 100f es-master Besuchen Sie http://IP:9200/_cat/nodes, um die ES-Clusterinformationen zu überprüfen. Sie können sehen, dass die Master- und Slave-Knoten erfolgreich bereitgestellt wurden: Häufig verwendete APIs für die Knotenbereitstellung:
Bereitstellung von Kibana 7.3.0 Erstellen Sie eine Kibana-Konfigurationsdatei vim /mnt/kibana.yml # ## ** DIES IST EINE AUTOMATISCH GENERIERTE DATEI ** ## # ## Standard-Kibana-Konfiguration für Docker-Ziel Servername: Kibana #Konfigurieren Sie den Remote-Zugriffsserver von Kibana.host: "0.0.0.0" #Konfigurieren Sie die Zugriffsadresse elasticsearch.hosts: [ "http://127.0.0.1:9200" ] #Chinesische Schnittstelle i18n.locale: „zh-CN“ #xpack.monitoring.ui.container.elasticsearch.enabled: wahr Zeigen Sie die es-master-Container-ID an docker ps | grep es-master Bereitstellen von Kibana Beachten Sie, dass Sie im Befehl 40eff5876ffd in die es-Master-Container-ID ändern, das Image abrufen und geduldig warten müssen ! # Ziehen Sie das Image. Sie können den Container direkt erstellen und diesen Schritt ignorieren. docker pull docker.elastic.co/kibana/kibana:7.3.0 # Container erstellen## --network=container bedeutet gemeinsame Nutzung des Containernetzwerks docker run -it -d \ -v /mnt/kibana.yml:/usr/share/kibana/config/kibana.yml \ -v /etc/lokaleZeit:/etc/lokaleZeit \ -e ELASTICSEARCH_URL=http://172.17.0.2:9200 \ --network=container:40eff5876ffd \ --name kibana docker.elastic.co/kibana/kibana:7.3.0 Überprüfen Sie das Kibana-Containerprotokoll. Wenn Sie das in der folgenden Abbildung dargestellte Protokoll sehen, bedeutet dies, dass der Start erfolgreich war. Docker-Protokolle -f --tail 100f Kibana Besuchen Sie http://IP:5601, möglicherweise erscheint 503. Warten Sie einen Moment, dann ist der Zugriff in Ordnung. Wenn Sie auf die Kibana-Konsole zugreifen können, bedeutet dies, dass Kibana erfolgreich installiert wurde und eine Verbindung mit es-master hergestellt wurde. Bereitstellung von Logstash 7.3.1 Schreiben der Logstash-Konfigurationsdatei Eingabe { # Quellbeats schlägt { # Port-Port => "5044" } } # Analyse- und Filter-Plugins, mehrere Filter sind möglich { grok { # Wo Grok-Ausdrücke gespeichert sind patterns_dir => "/grok" # Grok-Ausdruck neu schreiben # match => {"message" => "%{SYSLOGBASE} %{DATA:message}"} # Löschen Sie das native Nachrichtenfeld overwrite => ["message"] # Definieren Sie Ihre eigene Formatübereinstimmung => { "Nachricht" => "%{URIPATH:Anfrage} %{IP:Clientip} %{NUMBER:Antwort:int} \"%{WORD:Quellen}\" (?:%{URI:Referrer}|-) \[%{GREEDYDATA:Agent}\] \{%{GREEDYDATA:Params}\}" } } # Abfrageklassifizierungs-Plugin GeoIP { Quelle => "Nachricht" } } Ausgabe { # Elasticsearch auswählen elastische Suche # es Cluster-Hosts => ["http://172.17.0.2:9200"] #Benutzername => "root" #Passwort => "123456" # Indexformatindex => "omc-block-server-%{[@metadata][version]}-%{+JJJJ.MM.tt}" # Auf „true“ setzen, um anzugeben, dass, wenn Sie eine benutzerdefinierte Vorlage namens „logstash“ haben, Ihre benutzerdefinierte Vorlage die Standardvorlage „logstash“ überschreibt. template_overwrite => wahr } } Bereitstellen von Logstash # Ziehen Sie das Image, Sie können den Container direkt erstellen und diesen Schritt ignorieren docker pull logstash:7.3.1 # Container erstellen# xpack.monitoring.enabled aktiviert die Sicherheits- und Überwachungsdienste von X-Pack# xpack.monitoring.elasticsearch.hosts legt die ES-Adresse fest, 172.17.0.2 ist die IP des es-Master-Containers # Docker ermöglicht Ihnen, einige Befehle auszuführen, wenn der Container gestartet wird. logsatsh -f bedeutet, logstash durch Angabe der Konfigurationsdatei auszuführen. /usr/share/logstash/config/logstash-sample.conf ist die Verzeichnisdatei im Container. docker run -p 5044:5044 -d \ -v /mnt/logstash-filebeat.conf:/usr/share/logstash/config/logstash-sample.conf \ -v /etc/lokaleZeit:/etc/lokaleZeit \ -e elasticsearch.hosts=http://172.17.0.2:9200 \ -e xpack.monitoring.enabled=true \ -e xpack.monitoring.elasticsearch.hosts=http://172.17.0.2:9200 \ --name logstash logstash:7.3.1 -f /usr/share/logstash/config/logstash-sample.conf Hier müssen Sie auf die ES-Clusteradresse achten. Hier konfigurieren wir nur die ES-Master-IP (172.17.0.2). Detaillierte Logstash-Konfiguration. Wenn Sie das folgende Protokoll sehen, war die Installation erfolgreich: Bereitstellung von Filebeat 7.3.0 Filebeat ist keine notwendige Komponente. Wir können auch Logstash zum Übertragen von Protokollen verwenden. Um beispielsweise alle Protokolle zusammenzuführen, die nicht mit „20“ beginnen, können Sie die folgende Logstash-Konfiguration verwenden: Eingabe { # Quellbeats schlägt { # Port-Port => "5044" } Datei { Typ => "Serverprotokoll" Pfad => "/logs/*.log" start_position => "Anfang" codec=>mehrzeilig{ // Regulärer Ausdruck, alle Protokolle mit dem Präfix „20“. Wenn Ihre Protokolle Präfixe wie „[2020-06-15“ haben, können Sie diese durch „^[“ ersetzen. Muster => "^20" // Ob die reguläre Regel negate => true negiert werden soll // previous bedeutet, in die vorherige Zeile einzufügen, next bedeutet, in die nächste Zeile einzufügen, was => "vorheriges" } } } Beachten Sie, dass Filebeat auf demselben Server wie die Anwendung bereitgestellt werden muss. Hier wird die Anwendung mithilfe von Docker bereitgestellt, und /mnt/omc-dev/logs ist das Zuordnungsverzeichnis der Anwendungsprotokolldatei. Wenn Sie den Dienst auch über Docker bereitstellen, denken Sie daran, die Protokolldatei über [-v /mnt/omc-dev/logs:/app/logs] zuzuordnen! Erstellen einer Filebeat-Konfigurationsdatei ## /mnt/omc-dev/logs ist das Anwendungsprotokollverzeichnis. Das Anwendungsbereitstellungsverzeichnis muss zugeordnet werden. mkdir -p {/mnt/omc-dev/logs,/mnt/filebeat/logs,/mnt/filebeat/data} vim /mnt/filebeat/filebeat.yml Dateibeat.Eingaben: - Typ: Protokoll aktiviert: true Pfade: # Alle .log-Dateien im aktuellen Verzeichnis - /home/project/spring-boot-elasticsearch/logs/*.log mehrzeiliges Muster: '^20' multiline.negate: true multiline.match: vorherige Protokollierungsebene: Debug Dateibeat.config.modules: Pfad: ${path.config}/modules.d/*.yml reload.enabled: falsch setup.template.einstellungen: index.Anzahl_der_Scherben: 1 setup.dashboards.enabled: falsch setup.kibana: Host: "http://172.17.0.2:5601" # Nicht direkt an ES übertragen #Ausgabe.elasticsearch: # Hosts: ["http://es-master:9200"] # index: "filebeat-%{[beat.version]}-%{+yyyy.MM.dd}" Ausgabe.logstash: Gastgeber: ["172.17.0.5:5044"] #Scanfrequenz: 1s schließen_inaktiv: 12h Zurückweichen: 1s max_backoff: 1 s Backoff-Faktor: 1 Spülzeitüberschreitung: 1 s Prozessoren: - add_host_metadata: ~ - add_cloud_metadata: ~ Beachten Sie, dass Sie die Logstash-IP und den Port ändern müssen. # Ziehen Sie das Image, Sie können den Container direkt erstellen und diesen Schritt ignorieren docker pull docker.elastic.co/beats/filebeat:7.3.0 # Container erstellen## --link logstash Verbindet den angegebenen Container mit der aktuellen Verbindung. Sie können einen Alias festlegen, um zu vermeiden, dass der Container aufgrund dynamischer Änderungen, die durch die IP-Methode verursacht werden, nicht verbunden werden kann. logstash ist der Containername. docker run -d -v /mnt/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \ -v /mnt/omc-dev/logs:/home/projekt/spring-boot-elasticsearch/logs \ -v /mnt/filebeat/logs:/usr/share/filebeat/logs \ -v /mnt/filebeat/data:/usr/share/filebeat/data \ -v /etc/lokaleZeit:/etc/lokaleZeit \ --link logstash --name filebeat docker.elastic.co/beats/filebeat:7.3.0 Überprüfen Sie die Protokolle. Wir haben die Protokollebene von Filebeat in der Konfigurationsdatei auf Debug gesetzt, sodass alle gesammelten Informationen angezeigt werden. Docker-Protokolle -f --tail 100f Filebeat Sie können sehen, dass durch Abfragen des ES-Index drei weitere Indizes gefunden werden. Durch die von uns konfigurierte tägliche Indexsegmentierung gibt es drei OMC-Dienstindizes, da meine Umgebung seit drei Tagen ausgeführt wird (OMC ist ein Dienst für geplante Aufgaben, Sie können zum Testen auch eine einfache geplante Aufgabe schreiben). Als nächstes erstellen wir ein Kibana-Indexmuster und führen Protokollabfragen durch: Nachdem der Index erstellt wurde, können Sie Protokolle nach Indexmuster in der Discover- Ansicht abfragen. Der Artikel endet hier. Wenn Sie andere Dienste haben, die eingeführt werden müssen, müssen Sie die Protokolle nur in das angegebene Verzeichnis mounten. Wenn der Dienst auf anderen Servern bereitgestellt wird, müssen Sie natürlich Filebeat auf dem Server bereitstellen und die Netzwerkkonnektivität zwischen den Servern sicherstellen~~ Und hier noch ein Open-Source-Projekt zur automatisierten ELK-Docker-Bereitstellung: https://github.com/deviantony/docker-elk.git -------------------------------------------------------- Aktualisiert am 28. Juni 2020 Vor Kurzem ist es zu einem durch Logstash verursachten Problem mit einem physischen Speicheranstieg gekommen. Lassen Sie mich kurz die Hauptprobleme erläutern: Derzeit beträgt das tägliche Protokollvolumen eines einzelnen Dienstes etwa 2,2 GB. Da es in der Anfangszeit keine Begrenzung des Logstash-Speichers gab, belegt Logstash bei eingehenden großen Datenmengen den Speicher und die E/A wie verrückt. In letzter Zeit hat der Anwendungsdienstverkehr auf demselben Server zugenommen, was letztendlich zu unzureichendem Speicher und einem OutOfMemoryError-Problem führte. Später wurden die früheren Legacy-Probleme durch die Optimierung des JVM-Speichers (ich werde nicht ins Detail gehen, im Internet gibt es zahlreiche Informationen dazu) und das Hinzufügen der Logstash-Antwortspeicherkonfiguration behoben. Fügen Sie abschließend Logstash zur Überwachung zu Kibana hinzu (natürlich können Sie Logstash-Protokolle auch für ES konfigurieren): https://blog.csdn.net/QiaoRui_/article/details/97667293 Das könnte Sie auch interessieren:
|
<<: Vue verwendet el-table, um Spalten und Zeilen dynamisch zusammenzuführen
>>: Beispiele für die Verwendung temporärer Tabellen in MySQL
Datenblatt: Von Spalte zu Zeile: mit max(case whe...
1. Voraussetzungen Da ich es schon mehrmals insta...
Verwandte Artikel: Anfänger lernen einige HTML-Ta...
Inhaltsverzeichnis 1. Installation 2. Import 3. V...
Weil ich ein Python-Programm geschrieben und inte...
Wenn Sie den Docker-Befehl zum ersten Mal verwend...
Wenn wir unter CentOS 7 den Host-Port mit einem B...
Bevor wir JSX zum Erstellen eines Komponentensyst...
Aktivieren Sie den Dienst, wenn Sie ihn benötigen...
Vorwort Ich hatte zuvor die 2375 Remote API von D...
Heute habe ich einem Kunden ein kleines Tool für ...
Vorwort: In einigen früheren Artikeln haben wir h...
Es gibt wahrscheinlich ebenso viele modulare Lösu...
In diesem Artikelbeispiel wird der spezifische Co...
Fragen zu Select-Elementen in HTML wurden an viel...