Перенаправление логов из Fluentbit в Seq

Seq — это сервер поиска и анализа структурированных журналов приложений в режиме реального времени. Можно смотреть на него как на своего рода альтернативу для ELK. Хотя лицензия тут тоже не свободная, а использование для юрлиц платное. Но для домашней лаборатории для меня в своё время это оказался превосходный вариант (в принципе я до сих пор считаю так, потому что времени на развертывание Seq тратится несравнимо меньше чем на ELK. Для экспериментов самое то.

В данной статье проведу нехитрую операцию по развертыванию и настройке fluentbit и seq в docker, и настрою отправку собранных логов из fluentbit в seq.

Начнём с создания отдельной сети для наших контейнеров:

docker network create fluent-bit_seq

Установка Seq

Теперь захэшируем пароль, который будет использоваться.

PH=$(echo 'seqPass%%' | docker run --rm -i datalust/seq config hash)

Убедимся, что переменная действительно содержит пароль:

echo $PH

Запускаем контейнер:

docker run --name seq -d --network fluent-bit_seq \ -p8080:80 --restart unless-stopped \ -e ACCEPT_EULA=Y -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH" \ datalust/seq

Теперь, можем обратиться в браузере к localhost:8080 и залогиниться в Seq с помощью username=admin password=seqPass%%

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост
Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

Установка Fluentbit

Для начала экспортируем переменную, которая будет содержать каталог из которого будет взята конфигурация Fluentbit.

export sharedFolder=/var/fluent-bit_seq

Запустим временный контейнер, откуда скопируем дефолтный конфиг:

docker run -d --rm --name temp cr.fluentbit.io/fluent/fluent-bit

Скопируем сам конфиг с последующей остановкой ставшего ненужным контейнера:

docker cp temp:/fluent-bit/etc/ $sharedFolder docker stop temp

Теперь еще раз запустим контейнер fluentbit, но уже смонтировав в него каталог с конфигом:

docker run -dti --name fluent-bit --network fluent-bit_seq \ -v $sharedFolder:/fluent-bit/etc \ cr.fluentbit.io/fluent/fluent-bit

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

По дефолту fluentbit отправляет вывод на stdout. Так что с помощью docker log всегда можно посмотреть что с ним происходит. Наша задача как раз исправить дефолтное поведение.

docker logs fluent-bit

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

Настройка отправки логов в Seq

Отправляемся в конфиг fluentbit и ищем следующую секцию:

# fluent-bit.conf

[OUTPUT]

name stdout

match *

Заменяем её на указанную ниже, с последующим сохранением:

# fluent-bit.conf

[OUTPUT]

Name http

Match *

Host seq

Port 5341

URI /api/events/raw?clef

Format json_lines

Json_date_key @t

Json_date_format iso8601

Log_response_payload False

Теперь перезапустим контейнер с fluentbit для принятия изменений:

docker restart fluent-bit

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

Возвращаемся в браузер, открываем Seq, логинимся и теперь можем видеть, что логи из fluentbit отправляются прямиком туда:

Перенаправление логов из Fluentbit в Seq Linux, IT, DevOps, Сисадмин, Будни сисадмина, Туториал, Гайд, Логи, Длиннопост

Лига Сисадминов

1.5K поста17.6K подписчиков

Добавить пост

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.