Советы по организации структуры централизованного сбора логов


(Ivashchenko Yegor) #1

Всем привет.

Помогите пожалуйста развернуть ELK стек для сбора логов с продакшена.

Я снял некоторые показатели с продакшена и хочу спросить у вас совета, какими должны быть
технические требования к logstash-server и как организовать архитектуру стека.

Porduction:

На данный момент это окружение из 7 серверов, на каждом из которых установлено приложение и запущенны отдельные его сервисы. В дальнейшем планируется собирать логи еще с одного окружения из 6 серверов, а также планируется запуск новых приложений (до 5), которые будут работать в связке с основным, и будут производить каждое по одному лог файлу.

Приложение является контакт центром и производит около 30 текстовых лог файлов различных форматов (есть полностью однострочные, полностью многострочные и смешанные ). С помощью shell скриптов я посчитал частоту ивентов в каждом файле, а также процент многострочных events в каждом логе. Вот, что получилось:

По каждому серверу в первой колонке указано количество ивентов генерируемых в час в среднем в
промежуток с 7 утра до 7 вечера в будний день*. Во второй колонке идет максимальное количество
логов, генерируемых в час, которое удалось получить из имеющихся логов. И в третьей колонке идет процент многострочных ивентов.

* Некоторые особенно многословные логи не удалось посчитать в часы наибольшей нагрузки так как логи с серверов снимались уже вечером и логов с дневными событями на сервере уже не было. Поэтому расчеты максимальной и средней частоты лог-ивентов в час могут иметь погрешность в пару миллионов.

Некоторое логи достаточно статические и не зависят от нагрузки системы. Другие логи генерируются в зависимости от нагрузки и частоты запросов. В общем, опираясь на максимальную оценку можно сказать, что по имеющимся логам можно ожидать около 5 млн событий в час *. Хотелось бы, что бы ELK stack развернутый для данного окружения имел overhead и справлялся бы, скажем, с 6 млн событий/час. Так же, хотелось бы иметь возможность удобного расширения архитектуры стека, для добавления новых окружений.

* Под событиями имеется ввиду не логстеш событие которое равно одной строке в случае с файловым входом, а полноценное (многострочное) событие в логе.

Планируется, что логи будут считываться с серверов с помощью logstash-forwarder. Возможно будут также входы syslog по tcp и парочка дополнительных входов, которые вы посоветуете мне в этом топике

Проблемы, с которыми я столкнулся при стандартном подходе в организации централизованного лог сервера описаны здесь

Поделитесь, пожалуйста, своими идеями, как можно организовать сбор логов в данных условиях.
Так же прошу подсказать минимальные требования к системе (Сколько машин под инстансы чего, процессор, оперативная память, память, ОС (я думаю будет debian/centos), сколько нод в ES.. )

Скажите, если нужна дополнительная информация.
С уважением,
Егор


(system) #2