Назад | Перейти на главную страницу

Подключение системного журнала к Logstash не сбрасывается

У нас есть установка с одним сервером Logstash (1.4.2, с использованием встроенного Elasticsearch) для получения журналов от ряда других клиентов (через TCP и их rsyslogd экземпляры). Одна проблема, которая сейчас возникает неоднократно, заключается в том, что одно за другим сообщения от хостов больше не принимаются, однако нигде нет сообщений об ошибках.

По сути, похоже, что хост Logstash не может обработать количество входящих сообщений, и соединения остаются в странном состоянии; я сделал lsof/strace на клиенте rsyslogd экземпляров, а также захватил некоторый трафик как на клиентах, так и на сервере, и кажется, что пока у клиентов все еще открыто соединение:

rsyslogd 30088 syslog    1u  IPv4           14878202       0t0        TCP 10.129.X.X:47492->10.129.X.X:5544 (ESTABLISHED)

, это соединение в основном разорвано, поскольку сервер (порт 5544) отправляет сообщения TCP Zero Window, которые, как Wireshark говорит мне, по сути, Logstash не успевает (загрузка ЦП на хосте не всегда максимальна, а регулярно составляет около 75% на всех четырех ядрах).

У меня такой вопрос: есть ли флаг / настройка / ... для получения rsyslogd демоны, чтобы отступить / повторно подключиться в такой ситуации, или для Logstash, чтобы правильно закрыть соединения, если он не может поддерживать? (Это известная проблема? Потому что мне не удалось найти подходящие ссылки.)

Изменить: тем временем мы изменили плагин ввода на tcp вместо того syslog, который вместе с руководством grok парсинг, вроде лучше справляется с нагрузкой. Я все же хотел бы понять исходную проблему.