25.12.2018
Суть: Обработка логов с помощью Filebeat и Logstash требует очень много ресурсов, лучше использовать rsyslog, который есть в каждом дистрибутиве, умеет все необходимое, работает очень быстро за счет ухода от регулярок.
Сейчас этот стек уже стал FLEK(Filebeat, Logstash, ElasticSearch, Kibana).Filebeat читает логи, передает в Logstash, где их обрабатывает регулярками на java. Это требует очень много ресурсов.
Rsyslog — проект, давно включенный в минимальную поставку любого дистрибутива. Им можно и читать, и обрабатывать, и дополнять.
Состоит из входных модулей, модулей обработки, выходных модулей. Модулей существует огромное количество, абсолютно под любую задачу.
Для парсинга используется модуль mmnormalize
, который работает поверх библиотеки liblognorm
(скоростной парсер). Он позволяет парсить многие вещи без регулярных выражений, за счет этого работает очень быстро. Был опыт обработки 250Гб/час(LA < 1% @ 56*Xeon 2.6GHz).
Конфиг rsyslog описывается языком программирования RainerScript. Весь конфиг можно условно назвать программой, которая выполняется для каждой записи.
В нем нужно указать:
reqid:char-to("extrade":" ")
говорит что весь текст до пробела нужно поместить в поле reqid
.annotate
указываем дополнительные поля.Пример конфига для сервиса:
Пример конфига с правилами:
Я консультирую о том о чем пишу, связаться со мной можно через telegram @aladmit или по почте [email protected]