Logstash async appender вызывает остановку Java-приложения из-за OOM - PullRequest
0 голосов
/ 20 декабря 2018

Мы используем следующую конфигурацию для нашего приложения. Spring boot + logstash LogstashTcpSocketAppender (описано здесь https://github.com/logstash/logstash-logback-encoder/blob/master/README.md#tcp-appenders)

Вкратце, это асинхронный аппендер на основе архитектуры Lmax с размером буфера по умолчанию ~ 8000 записей журнала, в случаеошибка при logstash, все файлы будут сохранены в этом буфере. Представьте, что у вас длинные сообщения с 1 МБ, тогда потребуется куча 8 ГБ, что бессмысленно. В настоящее время у меня есть варианты: 1) использовать синхронизирующий сокет appender, но затем ведение журналазамедлит работу приложения, и в случае ошибки приложение перестанет отвечать 2) ограничит размер буфера, но затем сообщения могут быть потеряны. Кажется, это довольно распространенный случай, поэтому, каковы стратегии для обработки таких случаев?Может быть, что-то вроде дампа в какой-нибудь файл и затем повторной обработки?

1 Ответ

0 голосов
/ 07 февраля 2019

Мы решили использовать драйвер Cloudwatch для образов Docker для хранения журналов в AWS Cloudwatch.

Затем прочитать этот журнал с помощью плагина logstash-cloudwatch и отправить его в ES.Таким образом, это не влияет на приложение, поскольку оно не отправляет журналы по TCP и не требует дополнительного буфера для отправки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...