Vielen Dank! Ein Ingenieur, der für den Produktinspektionsprozess in der Abteilung Produktionstechnik verantwortlich ist. Dies ist eine Fortsetzung von Analysieren und Visualisieren von CSV-Protokollen mit Excel Elastic Stack (Docker-Compose) - Was ist Elastic Stack?.
Dieser Artikel richtet sich an Personen, die Elastic Stack noch nicht kennen und darüber nachdenken, ihn auszuprobieren.
Mit Docker-Compose haben wir zusammengefasst, was Sie tun müssen, um Elastic Stack zu starten. Ich habe eine Reihe von Einstellungsdateien in GitLab eingefügt. Bitte beziehen Sie sich darauf.
Klicken Sie hier für das Repository-> Elastic-Stack
Kibana, Elasticsearch, Logstash, Filebeat 4 Docker werden zusammen mit Docker-Compose gestartet. Wir haben in jedem Verzeichnis einen Konfigurationsordner erstellt und verschiedene Einstellungen vorbereitet.
docker-compose.yml
version: '3.7'
services:
es01:
build: ./elasticsearch
container_name: es01
environment:
- node.name=es01
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
#Kommentieren Sie aus, wenn Sie die Daten beibehalten möchten
#- esdata01:/usr/share/elasticsearch/data
- ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
- ./elasticsearch/config/log4j2.properties:/usr/share/elasticsearch/config/log4j2.properties
#Wenn Sie auf den 9200 zugreifen möchten, kommentieren Sie
#ports:
# - 9200:9200
networks:
- esnet
kibana01:
build: ./kibana
container_name: kibana01
links:
- es01:elasticsearch
ports:
- 5601:5601
networks:
- esnet
logstash01:
build: ./logstash
container_name: logstash01
links:
- es01:elasticsearch
volumes:
- ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml
- ./logstash/config/log4j2.properties:/usr/share/logstash/config/log4j2.properties
- ./logstash/config/pipelines.yml:/usr/share/logstash/config/pipelines.yml
- ./logstash/pipeline/logstash.conf:/usr/share/logstash/pipeline/logstash.conf
- ./logstash/extra_patterns/date_jp:/opt/logstash/extra_patterns
networks:
- esnet
filebeat01:
build: ./beats/filebeat
container_name: filebeat01
links:
- logstash01:logstash
volumes:
- ./beats/filebeat/config/filebeat.yml:/usr/share/filebeat/filebeat.yml
- ./beats/filebeat/logs/:/var/log/
networks:
- esnet
#Kommentieren Sie aus, wenn Sie die Daten beibehalten möchten
#volumes:
# esdata01:
# driver: local
networks:
esnet:
driver: bridge
Sie müssen vor dem Start vm.mem_map_count settings hinzufügen. Wenn die Kernelparameter nicht korrekt wiedergegeben werden, führen Sie Folgendes aus.
$ sudo sysctl --system
Wenn Sie es starten, ohne es einzustellen, tritt der folgende Fehler auf und es wird nicht gestartet.
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
log4j2.properties Ich denke, dass die Datei log4j2.properties nach Bedarf festgelegt werden sollte, um das laufende Protokoll beim Start festzulegen. Wenn richtig eingestellt, denke ich, dass das Setup reibungslos sein wird. pipeline.yml logstash hat Eingabe (Eingabe) -> Verarbeitung (Filter) -> Ausgabe (Ausgabe) als eine Pipeline, aber wenn Sie verschiedene Protokolle eingeben möchten, verzweigen Sie im Filterprozess mit if-else. Muss verarbeitet werden. Durch Hinzufügen der Multipipeline-Einstellung können Sie mehrere Pipelines vorbereiten, ohne if-else zu verwenden. logstash.conf Die spezifische Verarbeitung wird hier beschrieben. Beschreiben Sie den Inhalt, den Sie ausführen möchten, in den drei Plug-Ins Eingabe, Filter und Ausgabe.
extra_patterns/date_jp Verwenden Sie diese Option, wenn Sie bei Verwendung des Grok-Filters ein benutzerdefiniertes Muster hinzufügen möchten. Überprüfen Sie Official custom_patterns. Da date_jp ein entsprechend angehängter Dateiname ist, können Sie einen beschreibenden Namen verwenden.
filebeat.yml Dies kann erreicht werden, indem in den Einstellungen aktiviert auf true und in den Einstellungen auf * .csv gesetzt wird, wenn Sie die CSV-Datei lesen möchten.
filebeat.inputs:
# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.
- type: log
# Change to true to enable this input configuration.
enabled: true
# Paths that should be crawled and fetched. Glob based paths.
paths:
- /var/log/*.csv
filebeat überträgt normalerweise den Inhalt der Datei zeilenweise. Durch Hinzufügen der Einstellung für mehrere Zeilen können jedoch mehrere Zeilen zusammen mit \ n Trennzeichen basierend auf den festgelegten Regeln übertragen werden. Siehe Zusammenfassung der mehrzeiligen Einstellungen, die mehrere Zeilen mit Filebeat verarbeiten Ich habe es erhalten.
### Multiline options
# Multiline can be used for log messages spanning multiple lines. This is common
# for Java Stack Traces or C-Line Continuation
# The regexp Pattern that has to be matched. The example pattern matches all lines starting with [
#multiline.pattern: ^\[
multiline.pattern: (End)
# Defines if the pattern set under pattern should be negated or not. Default is false.
#multiline.negate: false
multiline.negate: true
# Match can be set to "after" or "before". It is used to define if lines should be append to a pattern
# that was (not) matched before or after or as long as a pattern is not matched based on negate.
# Note: After is the equivalent to previous and before is the equivalent to to next in Logstash
#multiline.match: after
multiline.match: before
Dies ist ein Ordner zum Eingeben von Beispielprotokollen zum Testen.
Sie können den Start von Kibana überprüfen, indem Sie Docker starten und nach einer Weile auf "http: // localhost: 5601" zugreifen. Wenn Sie sich das Kibana-Startprotokoll ansehen, können Sie sehen, dass es gestartet wurde.
$ sudo docker-compose up -d
Wählen Sie Indexverwaltung-> Stapelverwaltung.
Indexmuster aus Kibana-> Indexmuster hinzufügen.
Die von Filebeat erfassten Daten sind Filebeat-7.9.2. Sie können also die von Index Pattern erfassten Daten hinzufügen, indem Sie Filebeat- * usw. in den Namen des Indexmusters eingeben. Mithilfe von Sternchen können Sie ein Indexmuster erstellen, das mehrere Datenquellen enthält.
Wählen Sie das Feld aus, das für das Zeitfeld verwendet werden soll. @timestamp ist der Standardzeitstempel. Wenn @timestamp nicht von logstash usw. verarbeitet wird, wird die Zeit, zu der das Protokoll importiert wurde, automatisch festgelegt.
Wählen Sie Kibana-> Discover für den Index und ändern Sie den Zeitbereich entsprechend dem Protokoll.
Bestätigen Sie abschließend, dass die Daten importiert wurden und Sie fertig sind.
Ich habe die Einstellungsdatei beim Starten von Docker-Compose erklärt. In Zukunft möchte ich vorstellen, wie man Daten wie die japanische Zeit analysiert und wie man mit CSV-Dateien umgeht.
Recommended Posts