Beispielcode zum Bereitstellen von ELK mit Docker-Compose

Beispielcode zum Bereitstellen von ELK mit Docker-Compose

Umfeld

  1. Host-IP 192.168.0.9
  2. Docker-Version 19.03.2
  3. Docker-Compose Version 1.24.0-rc1
  4. elasticsearch Version 6.6.1
  5. Kibana-Version 6.6.1
  6. Logstash Version 6.6.1

1. Schreiben von ELK-Dockerfile-Dateien und Konfigurationsdateien

● elastische Suche

1. elasticsearch-Dockerdatei

VON centos:latest
Füge elasticsearch-6.6.1.tar.gz /usr/local/ hinzu
KOPIEREN Sie elasticsearch.yml /usr/local/elasticsearch-6.6.1/config/
KOPIEREN Sie jdk1.8 /usr/local/
ENV JAVA_HOME=/usr/local/jdk1.8
ENV CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
RUN groupadd elsearch && \
Benutzeradd elsearch -g elsearch -p elasticsearch && \
chown -R elsearch:elsearch /usr/local/elasticsearch-6.6.1 && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/shanghai" > /etc/Zeitzone && \
yum installiere welches -y && \
mkdir /opt/data && \
mkdir /opt/logs
AUSSETZEN 9200 9300
#Wechseln Sie hauptsächlich zum Elsearch-Benutzer, um es zu starten
BENUTZER elsesearch
ARBEITSVERZEICHNIS /usr/local/elasticsearch-6.6.1/bin/
EINSTIEGSPUNKT ["./elasticsearch"]

2. elasticsearch.yml

[root@localhost elasticsearch]# egrep "^[^#]" elasticsearch.yml 
Clustername: es-cluster
Knotenname: Knoten-1
Pfad.Daten: /opt/data
Pfad.logs: /opt/logs
Netzwerkhost: 0.0.0.0
http.port: 9200
cluster.routing.allocation.disk.threshold_enabled: wahr
cluster.routing.allocation.disk.watermark.low: 94 %
cluster.routing.allocation.disk.watermark.high: 96 %
cluster.routing.allocation.disk.watermark.flood_stage: 98 %
Entdeckung.zen.minimum_master_nodes: 1

● Logstash

1. logstash-dockerfile

VON centos:latest
Füge logstash-6.6.1.tar.gz /usr/local/ hinzu
KOPIEREN Sie logstash.yml /usr/local/logstash-6.6.1/config/
KOPIEREN Sie logstash.conf /usr/local/logstash-6.6.1/config/
KOPIEREN Sie jdk1.8 /usr/local/
KOPIEREN start.sh /start.sh
ENV JAVA_HOME=/usr/local/jdk1.8
ENV CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
ENV PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
RUN mkdir /opt/data && \
mkdir /opt/logs && \
chmod +x /start.sh
EINSTIEGSPUNKT ["/start.sh"]

2. logstash-start.sh

#!/bin/bash
/usr/local/logstash-6.6.1/bin/logstash -f /usr/local/logstash-6.6.1/config/logstash.conf

3. logstash.yml

[root@localhost logstash]# egrep "^[^#]" logstash.yml 
Pfad.Daten: /opt/data
Pfad.logs: /opt/logs
pipeline.batch.size: 200

4. logstash.conf

Eingabe {
 Datei {
  Pfad => "/usr/local/nginx/logs/access.log"
  Typ => "nginx"
  start_position => "Anfang"
  sincedb_path => "/dev/null"
 }
 Datei {
  Pfad => "/var/log/secure"
  Typ => "sicher"
  start_position => "Anfang"
  sincedb_path => "/dev/null"
 }
}
#Eine ausführliche Beschreibung finden Sie in meinem vorherigen Blog-Filter {
  grok {
    Übereinstimmung => {
      "message" => '(? <Clientip> [0-9] {1,3} \. [0-9] {1,3} \. 2} \: [0-9] {2} \: [0-9] {2} \+[0-9]*\]) "(? > [^] | (http | https): // [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} \. [0-9] {1,3} \/) "" (?
    }
     remove_field => ["Nachricht", "Protokoll", "Beat", "Offset", "Prospektor", "Host", "@Version"]
  }
}
#output zeigt auf die Ausgabe des es-Containers {
 wenn [Typ] == "nginx" {
 elastische Suche
  Hosts => ["es:9200"]
  index => "nginx-%{+JJJJ.MM.tt}"
    }
   }
 sonst wenn [Typ] == "sicher" {
  elastische Suche
  Gastgeber => ["es:9200"]
  index => "sicher-%{+JJJJ.MM.tt}"
    }
   }
 }

● Kibana

1. Kibana-Dockerdatei

VON centos:latest
HINZUFÜGEN von kibana-6.6.1-linux-x86_64.tar.gz /usr/local/
KOPIEREN Sie kibana.yml /usr/local/kibana-6.6.1-linux-x86_64/config/
KOPIEREN start.sh /start.sh
AUSFÜHREN chmod +x /start.sh
EXPOSE 5601
EINSTIEGSPUNKT ["/start.sh"]

2. kibana.yml

[root@localhost kibana]# egrep "^[^#]" kibana.yml 
Server-Port: 5601
server.host: "0.0.0.0"
#Zeigen Sie auf Port 9200 des es-Containers elasticsearch.hosts: ["http://es:9200"]

3. kibana-start.sh

#!/bin/bash
/usr/local/kibana-6.6.1-linux-x86_64/bin/kibana

2. Docker-Compose, YML-Datei schreiben

[root@localhost elk_dockerfile]# cat docker-compose.yml 

Version: '3.7'
Leistungen:
 elastische Suche:
  Bild: elasticsearch:elk
  container_name: es
  Netzwerke:
   -Elch
  Bände:
   – /opt/Daten:/opt/Daten
   – /opt/logs:/opt/logs
  exponieren:
   - 9200
   - 9300
  Neustart: immer
  hängt ab von:
   - Logstash
   -kibana
 Protokollspeicher:
  Bild: logstash:elk
  Containername: Logstash
  Netzwerke:
   -Elch
  Bände:
   – /opt/logstash/data/:/op/data
   – /opt/logstash/logs/:/opt/logs
   - /opt/elk/elk_dockerfile/logstash/logstash.conf:/usr/local/logstash-6.6.1/config/logstash.conf
   – /usr/local/nginx/logs:/usr/local/nginx/logs
   – /var/log/sichern:/var/log/sichern
  Neustart: immer
 kibana:
  Bild: kibana:elk
  Containername: Kibana
  Häfen:
   -5601:5601
  Netzwerke:
   -Elch
  Bände:
   - /opt/elk/elk_dockerfile/kibana/kibana.yml:/usr/local/kibana-6.6.1-linux-x86_64/config/kibana.yml
Netzwerke:
 Elch:

Die Compiler-Dateiversion verweist auf

3. Zugriffsschnittstelle

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:
  • So erstellen Sie schnell ELK basierend auf Docker
  • Eine kurze Zusammenfassung der Praxis der Verbindung des Node-Frameworks mit ELK
  • Beispiel für die Verwendung von Docker zum Erstellen eines ELK-Protokollsystems
  • Detaillierte Analyse des ELK-Prinzips und Einführung

<<:  Der einfachste Weg, MySQL 5.7.20 mit yum in CentOS 7 zu installieren

>>:  So ändern Sie das Kennwort von mysql5.7.20 unter Linux CentOS 7.4

Artikel empfehlen

Methode zum Erstellen eines privaten Docker-Warehouses basierend auf Harbor

Inhaltsverzeichnis 1. Einführung in Harbor 1. Har...

Tabellenbezogene Anordnung und Javascript-Operationen table, tr, td

Gut funktionierende Einstellungen für Tabelleneige...

JavaScript entfernt unnötige Eigenschaften eines Objekts

Inhaltsverzeichnis Beispiel Methode 1: Löschen Me...

Probleme mit Sperren in MySQL

Schlossklassifizierung: Aus der Granularität der ...

Analyse der vier Transaktionsisolationsstufen in MySQL anhand von Beispielen

Vorwort Um bei Datenbankoperationen die Richtigke...

So konvertieren Sie MySQL horizontal in vertikal und vertikal in horizontal

Daten initialisieren Tabelle löschen, wenn `test_...

Web-Unterrichtspläne, Unterrichtspläne für Anfänger

Unterrichtsthemen Webseite Anwendbare Klasse Zwei...

Der Unterschied zwischen Docker Run und Start

Der Unterschied zwischen Ausführen und Starten in...