So erstellen Sie ein ELK-Protokollsystem basierend auf Docker

So erstellen Sie ein ELK-Protokollsystem basierend auf Docker

Hintergrundanforderungen:

Mit zunehmender Größe des Unternehmens gibt es immer mehr Server und die Anzahl der verschiedenen Zugriffsprotokolle, Anwendungsprotokolle und Fehlerprotokolle nimmt zu. Infolgedessen kann das Betriebs- und Wartungspersonal die Protokolle nicht gut verwalten. Entwickler müssen die Protokolle auf dem Server überprüfen, um Probleme zu beheben, was für das Betriebspersonal unbequem ist. Wenn sie Daten benötigen, müssen wir den Server betreiben und warten, um die Protokolle zu analysieren.

ELK-Einführung:

Bildbeschreibung hier einfügen

ELK ist die Abkürzung für drei Open-Source-Softwareprogramme: Elasticsearch, Logstash und Kibana, die alle Open-Source-Software sind. Derzeit wurde der ursprüngliche ELK Stack aufgrund der Hinzufügung des Beats-Tools in Elastic Stack umbenannt. Beats ist ein leichtes Tool zur Protokollsammlung und -verarbeitung (Agent), das nur wenige Ressourcen benötigt und sich zum Sammeln von Protokollen auf verschiedenen Servern und zum Übertragen an Logstash eignet. Der Beamte empfiehlt dieses Tool auch.

Bildbeschreibung hier einfügen

Bauschritte:

Nach der obigen Beschreibung sollte jeder ein wenig Verständnis dafür haben, dass zum Erstellen dieser Plattform mindestens 3/4 Software benötigt wird (Filebeat ist nicht erforderlich).

  • Kibana wird zur Anzeige verwendet
  • Elasticsearch zum Abrufen
  • Logstash wird zum Filtern verwendet
  • Filebeat wird zum Sammeln von Protokollen verwendet

Dieser Artikel setzt voraus, dass Sie bereits über eine Docker-Umgebung und grundlegende Erfahrung mit der Verwendung von Docker verfügen.

Ziehen Sie das Bild (eine einheitliche Version kann viele Fallstricke vermeiden):

Docker-Pull Kibana:6.8.2
Docker zieht Elasticsearch:6.8.2
docker pull mobz/elasticsearch-head:5 # ein Plugin für es docker pull logstash:6.8.2
docker pull docker.elastic.co/beats/filebeat:6.8.2 # Wenn es sehr langsam ist, können Sie versuchen, einen Proxy einzurichten oder die Docker-Image-Quelle zu ändern

Um einen Docker-Proxy in Linux einzurichten, können Sie ClashX verwenden, um die URL zu abonnieren und dann Docker mit dem Proxy zu verbinden. Wenn Sie einen Desktop haben, können Sie ihn direkt ändern. Wenn Sie keinen haben, können Sie eine Konfigurationsdatei erstellen, um ihn zu ändern. ⇒ Portal

Bildbeschreibung hier einfügen

Geben Sie Docker außerdem mehr Speicher, um Verzögerungen zu vermeiden.

Build ES:

docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch -e "discovery.type=single-node" elasticsearch:6.8.2

Browserzugriff (curl ist auch ok): localhost:9200. Wenn das folgende Ergebnis erscheint, bedeutet dies, dass der Start erfolgreich war:

Bildbeschreibung hier einfügen

Wenn ein Fehler auftritt, überprüfen Sie das Fehlerprotokoll.

ES-HEAD erstellen:

docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5

Besuchen Sie localhost:9100 erneut und Sie werden das folgende Ergebnis sehen:

Bildbeschreibung hier einfügen

Möglicherweise können Sie in es-head keine Verbindung zu es herstellen, da es keine domänenübergreifende Funktion aktiviert hat. Rufen Sie den es-Container auf und suchen Sie in der Konfigurationsdatei nach elasticsearch.yml. Fügen Sie dieser Datei Folgendes hinzu:

http.cors.enabled: wahr
http.cors.allow-origin: "*"

Starten Sie es dann neu und es-head kann eine Verbindung zu es herstellen.

Öffnen Sie Kibana:

docker run -d -p 5601:5601 --link elasticsearch -e ELASTICSEARCH_URL=http://elasticsearch:9200 kibana:6.8.2

Hier ist es http://elasticsearch:9200. Ändern Sie es nicht. Zuvor haben wir --link verwendet, um die Elasticsearch-IP-Adresse zur Hosts-Datei des Kibana-Containers hinzuzufügen, sodass wir über den definierten Namen direkt auf den ES-Dienst zugreifen können.
Nachdem der Container erfolgreich gestartet wurde, sollten Sie die folgenden Informationen in es-head sehen können:

Bildbeschreibung hier einfügen

Der Besuch von localhost:5601 führt zu Folgendem:

Bildbeschreibung hier einfügen

Bisher lief unser Kibana erfolgreich und es lief auch. Der nächste Schritt besteht darin, Protokolldienste zu sammeln.

Erstellen Sie Filebeat und Logstash:

Zunächst benötigen diese beiden Brüder einige Konfigurationsdateien. Wir möchten diese beiden Konfigurationsdateien im selben Ordner speichern:

mkdir elktest # Im Hauptverzeichnis, also ~/elktest Pfad cd elktest
berühren Sie filebeat.yml
berühren Sie logstash.conf.

Hinzufügen eines Profils

vim filebeat.yml
Dateibeat.prospectors:
- Pfade:
    - /home/elk/logs/user/a.log
  mehrzeilig:
      Muster: ^\d{4}
      negieren: wahr
      Übereinstimmung: nach
  Felder:
    doc_type: Benutzer
- Pfade:
    - /home/elk/logs/service/a.log
  mehrzeilig:
      Muster: ^\d{4}
      negieren: wahr
      Übereinstimmung: nach
  Felder:
    doc_type: Dienst
output.logstash: # Ausgabeadresse Hosts: ["logstash:5044"]
vim logstash.conf
Eingabe {
  schlägt {
    Port => "5044"
  }
}
Filter {
  json {
    Quelle => "Nachricht"
  }
}

Ausgabe {
  stdout { codec => rubydebug }
  elastische Suche
        Hosts => [ "elasticsearch:9200" ]
        index => "%{[Felder][Dokumenttyp]}-%{+JJJJ.MM.tt}"
    }
}

Sie sollten sich noch im Verzeichnis elktest befinden. Da wir keine Protokollquelle haben, wird in diesem Video manuell ein Protokoll erstellt und ein Protokollordner angelegt:

mkdir logdir

Erstellen Sie selbst einige Protokolle, schreiben Sie, was Sie wollen, ändern Sie die Datei- und Ordnernamen nicht, sie sind bereits in der Konfigurationsdatei zugeordnet. Nach Abschluss des Builds sollte Ihre Verzeichnisstruktur folgendermaßen aussehen:

Bildbeschreibung hier einfügen

Erstellen Sie einen Container:

docker run -it --name logstash --link elasticsearch -d -p 5044:5044 -v ~/elktest/logstash.conf:/usr/share/logstash/pipeline/logstash.conf logstash:6.8.2

docker run --name filebeat --link logstash -d -v ~/elktest/filebeat.yml:/usr/share/filebeat/filebeat.yml -v ~/elktest/logdir/user/:/home/elk/logs/user/ -v ~/elktest/logdir/service/:/home/elk/logs/service/ docker.elastic.co/beats/filebeat:6.8.2

An diesem Punkt sollte Ihr Es-Head folgendermaßen aussehen:

Bildbeschreibung hier einfügen

Sollte dies nicht der Fall sein, kannst du prüfen, ob der Container läuft und ob ein Fehlerprotokoll vorhanden ist. Du kannst außerdem elasticsearch im Logstash-Container und logstash im Filebeat-Container anpingen, um zu prüfen, ob ein Problem mit dem Pfad vorliegt.

Kibana zeigt: Index erstellen:

Bildbeschreibung hier einfügen

Nachdem die Erstellung abgeschlossen ist, überprüfen Sie sie und fügen Sie die Felder hinzu, die Sie anzeigen möchten. Der Inhalt befindet sich in der Nachricht (die zufällig der Inhalt von a.log ist):

Bildbeschreibung hier einfügen

Bisher ist unser Elch fertig gebaut. Freunde, die ihn erfolgreich gebaut haben, können sich zum Abendessen eine Hähnchenkeule gönnen! ! ! !

Oben finden Sie detaillierte Informationen zur Methode zum Erstellen eines Docker-basierten ELK-Protokollsystems. Weitere Informationen zum Erstellen eines ELK-Protokollsystems mit Docker finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM!

Das könnte Sie auch interessieren:
  • Beispiel für die Verwendung von Docker zum Erstellen eines ELK-Protokollsystems
  • Detaillierte Erläuterung zur schnellen Bereitstellung der ELK-Umgebung mit Docker (neueste Version 5.5.1)
  • Detaillierte Erläuterung der Verwendung von ELK zum Erstellen eines Docker-Containeranwendungsprotokollcenters
  • Docker erstellt ein ELK Docker-Cluster-Protokollsammlungssystem

<<:  CSS realisiert den Prozessnavigationseffekt (drei Methoden)

>>:  Tudou.com Frontend-Übersicht

Artikel empfehlen

Beispiel für die Konfiguration von nginx zur Implementierung von SSL

Umgebungsbeschreibung Serversystem: Ubuntu 18.04 ...

MySQL 8.x MSI-Version Installations-Tutorial mit Bildern und Text

1. MySQL herunterladen Offizielle Website-Downloa...

Eine kurze Einführung in Linux-Umgebungsvariablendateien

Im Linux-System können Umgebungsvariablen entspre...

MySQL-Abfrage gibt an, dass das Feld keine Zahl und kein Komma SQL ist

Grundlegende SQL-Anweisungen MySQL-Abfrageanweisu...

Empfohlene Methode zur Fehlerbehandlung für canvas.toDataURL image/png

Problemhintergrund: Es ist erforderlich, einen Sc...

Mysql kann keine nicht aggregierten Spalten auswählen

1. Einleitung Ich habe mein Blog kürzlich aktuali...

Sprechen Sie kurz über MySQL Left Join Inner Join

Vorwort Ich war kürzlich damit beschäftigt, ein K...

Centos8 (Minimalinstallation) Tutorial zur Installation von Python3.8+pip

Nachdem ich die Installation von Python8 minimier...

Implementierung der K8S-Bereitstellung eines Docker-Containers

Umgebung: (Docker, K8s-Cluster), fahren Sie mit d...

Eine kurze Analyse von MySQL-Verbindungen und -Sammlungen

Join-Abfrage Eine Join-Abfrage bezieht sich auf e...

XHTML Basic 1.1, eine vom W3C empfohlene Auszeichnungssprache für mobiles Web

W3C hat kürzlich zwei Standards veröffentlicht, n...

So implementieren Sie adaptive Container mit gleichem Seitenverhältnis mit CSS

Als ich kürzlich eine mobile Seite entwickelte, s...

XHTML-Erste-Schritte-Tutorial: Was ist XHTML?

Was ist HTML? Um es einfach auszudrücken: HTML wi...