Beispiel für die Verwendung von Docker zum Erstellen eines ELK-Protokollsystems

Beispiel für die Verwendung von Docker zum Erstellen eines ELK-Protokollsystems

Die folgenden Installationen verwenden alle das Verzeichnis ~/ als Stammverzeichnis der Installation.

ElasticSearch

Bild herunterladen:

$ sudo docker pull elasticsearch:5.5.0

Führen Sie den ElasticSearch-Container aus:

$ sudo docker run -it -d -p 9200:9200 -p 9300:9300 \
-v ~/elasticsearch/data:/usr/share/elasticsearch/data \
--name myes elasticsearch:5.5.0

Bitte beachten Sie, dass bei Verwendung von Version 6 oder höher JDK-Fehler auftreten. Überprüfen Sie die Protokolle.

$ Docker-Protokolle -f myes

Zeigen Sie die Protokolle an:

Warnung für OpenJDK 64-Bit-Server-VM: Die Option UseConcMarkSweepGC wurde in Version 9.0 verworfen und wird wahrscheinlich in einer zukünftigen Version entfernt.

Die im Internet gefundene ungefähre Bedeutung lautet:

jdk9 ist nicht sehr freundlich zu elasticSearch (die Version ist zu neu) und es muss JDK8 verwendet werden. Ich verwende JDK8u152 (jdk-8u152-windows-x64.exe). Wenn Sie JDK9 und elasticSearch-rtf (v5.1.1) verwenden, tritt der folgende Fehler auf. Bitte achten Sie besonders darauf, dass die Version elasticSearch6.0 JDK9 verwenden muss, da sonst das von der offiziellen Website heruntergeladene MSI nicht erfolgreich installiert werden kann. Der Grund wurde nicht sorgfältig geprüft.

Das ist auch ein sehr ärgerliches Problem, deshalb habe ich einfach direkt die stabile Version v5.5.0 installiert.

Logstash

Bild herunterladen:

$ sudo docker pull logstash:5.5.0

Erstellen Sie eine neue Konfigurationsdatei:

$ mkdir ~/logstash/conf.d && cd logstash/conf.d
$ vim logstash.conf

logstash.conf:

Eingabe {

 schlägt {
  Port => 5044 # Dieser Port muss derselbe sein wie der Port in filebeat.yml}

 Datei {
  Pfad => "/data/logs"
  # start_position => "Anfang"
 }
}

Filter {
 #grok {
 # Übereinstimmung => { "Nachricht" => "%{COMBINEDAPACHELOG}" }
 #}
 #Datum {
 # Übereinstimmung => ["Zeitstempel", "tt/MMM/jjjj:HH:mm:ss Z"]
 #}

 grok {

  patterns_dir => "/etc/logstash/conf.d/patterns"
  Übereinstimmung => {"Nachricht" => "%{TIMESTAMP_ISO8601:Zeit}\S%{MYSELF:msgid}%{MYSELF:Methode}%{MYDATA:Daten}%{MYSELF:Benutzerinfo}\S%{LOGLEVEL:Ebene}\S%{MYSELF:Thread}%{MYSELF:Anwendung}%{MYSELF:IP}"}
}
Datum {
   #match => [ "Zeit", "JJJJ-MM-tt HH:mm:ss,SSS" ]
   Übereinstimmung => [ "Zeit", "ISO8601" ]
   Ziel => "@Zeitstempel"
   Zeitzone => "Asia/Phnom_Penh"
 }

}

Ausgabe {

 stdout {
  Codec => Rubydebug
 }

 elastische Suche
  Aktion => "Index"
  Hosts => ["172.17.10.114:9200"]
  index => "%{[Felder][Indexname]}-%{+JJJJ.MM.tt}"
 }
}

Führen Sie den Logstash-Container aus:

$ sudo docker run -it -d -p 5044:5044 \
-v ~/logstash/conf.d:/etc/logstash/conf.d \
-v ~/logstash/data/logs:/data/logs \
--name logstash logstash:5.5.0 \
-f /etc/logstash/conf.d/logstash.conf

Kibana

Bild herunterladen:

$ sudo docker pull kibana:5.5.0

Erstellen Sie eine neue Konfigurationsdatei:

$ mkdir ~/kibana && cd ~/kibana
$ vim kibana.yml

kibana.yml:

Server-Port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://172.17.10.114:9200"

Führen Sie den Kibana-Container aus:

$ sudo docker run -it -d -p 5601:5601 \
-v ~/kibana:/etc/kibana \
--name kibana kibana:5.5.0

Filebeat

Filebeat muss auf dem Server bereitgestellt werden, auf dem Protokolle gesammelt werden müssen.

Bild herunterladen:

$ sudo docker pull docker.elastic.co/beats/filebeat:5.5.0

Erstellen Sie eine neue Konfigurationsdatei:

Dateibeat.prospectors:
- Typ: Protokoll
  Pfade:
   - ~/filebeat/logs #Geben Sie den Pfad der zu erfassenden Protokolldateien an:
  indexname: xxx # Tragen Sie hier den Projektnamen entsprechend dem Index => "%{[fields][indexname]}-%{+YYYY.MM.dd}" ein.
Ausgabe.logstash:
 Gastgeber: ["172.17.10.114:5044"]

Führen Sie den Filebeat-Container aus:

$ sudo docker run -it -d \
-v ~/filebeat/filebeat.yml:/usr/share/filebeat/filebeat.yml \
--name filebeat docker.elastic.co/beats/filebeat:5.5.0

Anbei ein Flussdiagramm der ELK-Struktur:

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Beispielcode zum Bereitstellen von ELK mit Docker-Compose
  • So erstellen Sie schnell ELK basierend auf Docker
  • Eine kurze Zusammenfassung der Praxis der Verbindung des Node-Frameworks mit ELK
  • Detaillierte Analyse des ELK-Prinzips und Einführung

<<:  Mysql 5.6.37 Winx64-Installation Dual-Version MySQL-Hinweise

>>:  Detaillierte Erklärung des DOM DIFF-Algorithmus in der React-Anwendung

Artikel empfehlen

CSS verwendet das Autoflow-Attribut, um einen Sitzauswahleffekt zu erzielen

1. Autoflow-Attribut: Wenn die Länge und Breite d...

Probleme beim Springen auf HTML-Seiten und bei der Parameterübertragung

HTML-Seitensprung: Fenster.öffnen(URL, "&quo...

Schritte zur Installation von MySQL 5.7.10 auf Windows Server 2008 R2

Installation mithilfe des MSI-Installationspakets...

So verwenden Sie den Linux-Befehl seq

1. Befehlseinführung Mit dem Befehl seq (Sequence...

Detaillierte Erläuterung der kombinierten MySQL-Indexmethode

Für jedes DBMS sind die Indizes der wichtigste Op...

Lösung für das Vue-Datenzuweisungsproblem

Lassen Sie mich ein Problem zusammenfassen, mit d...