elastic / elastic/logstash

Sending DLQ messages to disk not optimal in all cases

Open
#8,242 1 comment 2 reactions 0 assignees View on GitHub
DLQ enhancement
Dominant language
Java
Stars
14.9k
Forks
3.5k
Avg merge
1d 4h
Merged PRs (30d)
88

Description

Logstash: 5.6

Currently it seems the only option for the dead letter queue is to write the files to disk. This option works well if you're running instances of Logstash on VMs (with persistent drives) that aren't within groups that are auto-scallable although doesn't tend to work as well in scenarios where someone might be using Logstash in Kubernetes auto-scaled containers without persistent volume claims. You could end up either loosing events from the DLQ but also you can't evenly distribute the task of processing/indexing DLQ events to other logstash instances evenly.

For example, If you end up having a single pipeline that indexes a large volume of events and also causes a large amount of mapping conflicts, you'll be considerably increasing the load on that instance, and you can't share the task of processing its generated DLQ. Considering this, it would be great if an option could be added to publish DLQ messages to a Kafka topic directly. This way, many logstash instances could subscribe to this topic via the Kafka input and then evenly share the task of processing/indexing the messages.

Contributor guide

Open the contributing guide

Research direction

Start by examining the existing disk-backed dead letter queue behavior and how Logstash's Kafka input consumes a topic. Define the Kafka publishing option and confirm that multiple Logstash instances can share processing of the generated DLQ messages without losing them in auto-scaled environments.

Written by the indexing model from the issue text.

Assessment

Tech stack
kafka
Domain
distributed-systems, stream-processing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.