Como melhorar a performance de indexação de logs

Olá,

Eu tenho um cenário onde tenho 5 Redis que armazenam logs. Cada Redis desse tem N Logstashs conectados.
Cada grupo de logstashs escreve em um índice de um mesmo cluster de Elastic Search.
Os índices são rotacionados por hora e tem em média 25GB e 45MM de mensagens por hora.
O cluster de ElasticSearch é composto por 10 data nodes, de maneira que cada node tenha somente 1 shard, seja replica ou primary.

O meu problema está sendo em manter a fila dos Redis zerada. O modo que temos conseguido é escalando de forma bruta o logstash, usando 3GB de heap, PIPELINE_BATCH_SIZE=3000, REDIS_THREADS=30, REDIS_BATCH_COUNT=3000, geralmente 20 a 30 logstashs por índice.

Ainda não consegui monitorar bem o Logstash, mas o ElasticSearch está sendo monitorado via Prometheus/Grafana.
Nele, a latência de escrita aparece sempre na casa de 0,3ms.
Embora com 2 shards por node ela se mantenha assim mas a performance piore, não está claro para mim que agora o problema é no ElasticSearch.

O Redis também não apresenta nenhum alarme.

Gostaria de saber se alguém tem alguma dica da melhor forma de escoar esse throughput de mensagens com o Logstash, melhores configurações, etc...

Como é a config do pipeline no logstash? A opção threads tá configurada pra quanto? Compartilha o pipeline.

Já deu uma olhada nesse documento também? https://www.elastic.co/blog/just_enough_redis_for_logstash