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

So löschen Sie schnell alle Tabellen in MySQL, ohne die Datenbank zu löschen

Dieser Artikel beschreibt anhand eines Beispiels,...

V-Bind in Vue verstehen

Inhaltsverzeichnis 1. Analyse des wichtigsten Que...

Erfahren Sie, wie Sie eine MySQL-Datenbank auf dem Mac installieren

Laden Sie MySQL für Mac herunter: https://downloa...

Was sind die Dateiattribute von crw, brw, lrw usw. in Linux?

Was ist eine Datei? Eigentlich sind alle Dateien ...

Detaillierte Erklärung der MySQL Master-Slave-Inkonsistenz und Lösungen

1. MySQL Master-Slave-Asynchronität 1.1 Netzwerkv...

Vue verwendet Openlayers zum Laden von Tiandi Map und Amap

Inhaltsverzeichnis 1. Weltkarte 1. Installieren S...

Lösung für „Ubuntu kann keine Verbindung zum Netzwerk herstellen“

Effektive Lösung für Ubuntu, wenn in einer virtue...

10 Tipps für das User Interface Design mobiler Apps

Tipp 1: Konzentriert bleiben Die besten mobilen A...

Probleme bei der Installation von Python3 und Pip in Ubuntu in Docker

Text 1) Laden Sie das Ubuntu-Image herunter Docke...

So integrieren Sie Bilder eleganter in Vue-Seiten

Inhaltsverzeichnis Fehlerdemonstration Durch bere...

Detaillierte Erklärung der Beziehung zwischen React und Redux

Inhaltsverzeichnis 1. Die Beziehung zwischen Redu...