Logstash

Siehe auch

Verwandte Artikel
Offizielle Dokumentation
Linuxfabrik

Logstash ist eine eigenständige Datenverarbeitungs-Pipeline für Event-Daten. Es gehört zum Elastic Stack, benötigt zum Laufen aber weder Elasticsearch noch OpenSearch. Daten kommen über Inputs herein (Syslog, Beats, Dateien, Kafka, TCP/UDP, HTTP, JDBC und weitere) - ein rsyslog lässt sich also direkt an einen Syslog-, TCP- oder UDP-Input weiterleiten. Filter (etwa grok, mutate oder date) transformieren die Events, Outputs schreiben sie an ein oder mehrere Ziele. Elasticsearch und OpenSearch sind die häufigsten Outputs, möglich sind aber auch Dateien, Kafka, S3, E-Mail oder ein weiterer Syslog-Server. Jede Pipeline besteht aus Inputs, Filtern und Outputs.

Installation

Logstash kommt aus dem Elastic-Repo (dasselbe wie für Elasticsearch):

/etc/yum.repos.d/elastic.repo
[elastic-9.x]
name=Elastic repository for 9.x packages
baseurl=https://artifacts.elastic.co/packages/9.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
dnf --assumeyes install logstash
systemctl enable --now logstash

Alternativ installiert und verwaltet die linuxfabrik.lfops.logstash Ansible-Rolle Logstash.

Stack Monitoring via Elastic Agent

UUID des Clusters ermitteln:

Herkömmliches Monitoring deaktivieren, UUID des Clusters eintragen:

/etc/logstash/logstash.yml
monitoring.enabled: false
monitoring.cluster_uuid: ''

Logstash neu starten. Im Gegensatz zu Anpassungen an Pipelines reicht ein Reload hier nicht aus:

systemctl restart logstash.service

Sicherstellen, dass die richtige UUID in der API auftaucht:

curl http://localhost:9600/ | jq --raw-output '.monitoring.cluster_uuid'

Agent Policy für Logstash-Instanzen erstellen:

  • Siehe Elastic Agent und Fleet

  • https://kibana.example.com/app/fleet/policies: Policy Auswählen

  • „Add Integration“

    • „Select integration“: „Logstash“

    • Configure Integration:

      • „Metrics (Elastic Agent)“ deaktivieren

      • „Metrics (Stack Monitoring)“ aktivieren

API-Calls

# obtain uuid of cluster that the monitoring data is bound to
curl http://localhost:9600/ | jq --raw-output '.monitoring.cluster_uuid'