опубликовано: 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 или на почту aleksandrov@hey.com