Доставка данных системного журнала в Elasticsearch с помощью Fluent Bit

Хроносфера спонсировала этот пост.

Fluent Bit — это широко используемый агент, процессор и сервер пересылки данных с открытым исходным кодом, который позволяет собирать журналы, метрики и трассировки из различных источников, фильтровать и преобразовывать их, а затем пересылать в несколько пунктов назначения.

В современной инфраструктуре, несмотря на распространение структурированного ведения журнала JSON, системный журнал остается стандартом для сетевого оборудования, устаревших приложений и дистрибутивов Linux. Однако анализ файлов системного журнала локально на каждом сервере нецелесообразен.

В этом руководстве мы настроим Fluent Bit в качестве централизованного сервера системного журнала, который принимает журналы через UDP (протокол пользовательских дейтаграмм) и отправляет их непосредственно в Elasticsearch для анализа.

Предварительные условия

  • Docker и Docker Compose: Установлен в вашей системе.
  • Эластичный поиск: мы отправим журналы в экземпляр Elasticsearch. Чтобы продолжить, у вас должен быть запущен экземпляр. Вы можете обратиться к этому руководству, чтобы запустить его локально.
  • Знакомство с концепциями Fluent Bit: Такие как входы, выходы и буферы. Если вы не знакомы с этими понятиями, обратитесь к официальной документации.

Что такое системный журнал?

Системный журнал — это стандарт регистрации сообщений. Это позволяет разделить программное обеспечение, генерирующее сообщения, систему, которая их хранит, и программное обеспечение, которое сообщает и анализирует их.

Сообщения системного журнала обычно передаются через порт UDP 514 (или 5140 в средах без полномочий root). Поскольку это протокол «выстрелил и забыл», он быстрый и легкий, что делает его идеальным для журналирования больших объемов данных с маршрутизаторов, межсетевых экранов и легких контейнеров Linux. Однако необработанный текст системного журнала может быть сложно запросить. Используя Fluent Bit, мы можем принимать эти сообщения, структурировать их и сохранять в поисковой системе, такой как Elasticsearch.

Чтобы узнать больше о системном журнале, вы можете обратиться к странице системного журнала в Википедии.

Наш вариант использования

В этой демонстрации мы создадим среду моделирования с помощью Docker Compose:

  • Свободный бит: настроен для прослушивания UDP-порта 5140 на предмет трафика системного журнала.
  • Альпийские лесорубы: два отдельных контейнера Alpine Linux, которые будут действовать как «сетевые устройства». Они будут генерировать сообщения журнала каждые 10 секунд с помощью команды logger и отправлять их в наш контейнер Fluent Bit.
  • Эластичный поиск: место назначения, где будут храниться и индексироваться наши журналы.

Инструкции

1. Создайте каталог проекта.

Сначала создайте каталог для хранения вашей конфигурации и файлов Docker Compose.

mkdir fluent-bit-syslog-demo cd fluent-bit-syslog-demo 12 mkdir fluent-bit-syslog-democd fluent-bit-syslog-demo

2. Создайте свободную конфигурацию битов

Создайте каталог с именем fluent-bit/config и внутри него создайте файл с именем fluent-bit.yaml со следующим содержимым:

service:lush: 1 log_level: info parsers_file: parsers.conf конвейер: входы: — имя: режим системного журнала: udp прослушивание: 0.0.0.0 порт: 5140 выходы: — имя: es match: ‘*’ # ИЗМЕНИТЕ ЭТО, ЧТОБЫ СООТВЕТСТВОВАТЬ ВАШЕЙ НАСТРОЙКЕ ELASTICSEARCH SETUP хост: 192.168.1.5 порт: 9200 индекс: данные системного журнала http_user: эластичный http_passwd: rslglTS4 compress_type_name: ‘On’ 1234567891011121314151617181920212223 сервис: флеш: 1 уровень_журнала: информация parsers_file: конвейер parsers.conf: входы: — имя: режим системного журнала: прослушивание udp: 0.0.0.0 порт: 5140 выходные данные: — имя: es match: ‘*’ # ИЗМЕНИТЕ ЭТО, ЧТОБЫ СООТВЕТСТВОВАТЬ ВАШЕЙ НАСТРОЙКЕ ELASTICSEARCH SETUP хост: 192.168.1.5 порт: 9200 индекс: данные системного журнала http_user: elastic http_passwd: rslglTS4 compress_type_name: ‘On’

Этот файл сообщает Fluent Bit прослушивать сообщения системного журнала и пересылать их в ваш экземпляр Elasticsearch.

Примечание: Обновите хост, http_user и http_passwd в разделе вывода, чтобы они соответствовали вашим фактическим учетным данным Elasticsearch.

3. Создайте файл Docker Compose.

Создайте файл с именем docker-compose.yaml со следующим содержимым:

службы: fluent-bit: образ: ‘fluent/fluent-bit:latest’ имя_контейнера: fluent-bit порты: — ‘6000:5140/udp’ — ‘24224:24224’ тома: — ‘./fluent-bit/config/fluent-bit.yaml:/fluent-bit/etc/fluent-bit.yaml’ сети: — syslog-test restart: команда if-stopped: ‘-c /fluent-bit/etc/fluent-bit.yaml’ alpine-logger-1: изображение: ‘alpine:latest’ имя_контейнера: alpine-logger-1 зависит_он: — сети Fluent-bit: — команда syslog-test: | /bin/sh -c » apk add —no-cache util-linux && while true; do logger -n fluent-bit -P 5140 -t alpine-test \»Это тестовое сообщение от Alpine Logger 1 в \$(date)\» Sleep 10 Done » alpine-logger-2: image: ‘alpine:latest’ имя_контейнера: alpine-logger-2 depend_on: — сети Fluent-bit: — команда системного журнала-теста: | /bin/sh -c » apk add —no-cache util-linux && while true; do logger -n fluent-bit -P 5140 -t alpine-test \»Это тестовое сообщение от Alpine Logger 2 в \$(date)\» Sleep 10 Done » network: syslog-test: driver: Bridge 123456789101112131415161718192021222232425262728293031323334353637383940 услуги: fluent-bit: image: ‘fluent/fluent-bit:latest’ имя_контейнера: fluent-bit порты: — ‘6000:5140/udp’ — Тома ‘24224:24224’: — ‘./fluent-bit/config/fluent-bit.yaml:/fluent-bit/etc/fluent-bit.yaml’ сети: — перезапуск syslog-test: если не остановлена команда: ‘-c /fluent-bit/etc/fluent-bit.yaml’ alpine-logger-1: image: ‘alpine:latest’ имя_контейнера: alpine-logger-1 depend_on: — сети Fluent-bit: — команда syslog-test: | /bin/sh -c » apk add —no-cache util-linux && while true; do logger -n fluent-bit -P 5140 -t alpine-test \»Это тестовое сообщение от Alpine Logger 1 в \$(date)\» Sleep 10 Done » alpine-logger-2: image: ‘alpine:latest’ имя_контейнера: alpine-logger-2 depend_on: — сети Fluent-bit: — команда системного журнала-теста: | /bin/sh -c » apk add —no-cache util-linux && while true; do logger -n fluent-bit -P 5140 -t alpine-test \»Это тестовое сообщение от Alpine Logger 2 в \$(date)\» Sleep 10 Done «networks: syslog-test: driver: Bridge

Этот файл определяет нашу службу Fluent Bit и два контейнера Alpine, генерирующие трафик. Контейнер Alpine использует интерфейс командной строки средства ведения журнала для создания журналов в формате Syslog.

4. Запустите контейнер

Запустите среду с помощью Docker Compose:

docker Compose Up -d 1 Docker Compose Up -d

Как только контейнеры заработают, экземпляры Alpine немедленно начнут отправлять журналы в Fluent Bit, который пересылает их в Elasticsearch.

5. Проверьте журналы в Elasticsearch

Примечание: Мы создали индексы в Elasticsearch только с шаблоном данных системного журнала*.. Чтобы просмотреть эти журналы в Kibana, вам необходимо создать представление данных.

6. Очистка

docker Compose Down -v 1 Docker Compose Down -v

Заключение

В этом руководстве мы успешно настроили облегченный сборщик системных журналов с помощью Fluent Bit. Мы смоделировали реальную среду, в которой несколько серверов отправляют журналы в центральную точку через UDP. Fluent Bit собрал эти журналы и отправил их в Elasticsearch для хранения и анализа.

Чтобы узнать больше о Fluent Bit, прочитайте:

  • Что такое Fluent Bit?
  • В чем разница между OTel, Fluent Bit и Fluentd?
  • Что способствует быстрому внедрению битов?

Хроносфера — это платформа наблюдения, созданная для контроля в современном контейнерном мире. Признанная крупными аналитическими фирмами лидером, ChronSphere дает клиентам возможность сосредоточиться на данных и знаниях, которые важны для снижения сложности данных, оптимизации затрат и более быстрого устранения проблем. Узнайте больше Последние новости ChronSphere ТЕНДЕНЦИОННЫЕ ИСТОРИИ YOUTUBE.COM/THENEWSTACK Технологии развиваются быстро, не пропустите ни одной серии. Подпишитесь на наш канал YouTube, чтобы смотреть все наши подкасты, интервью, демонстрации и многое другое. ПОДПИСАТЬСЯ Группа, созданная в Sketch. Шарад Реготи — сертифицированный инженер-программист CKA и CKS из Мумбаи, который пишет технические статьи от имени ChronSphere. Узнайте больше от Шарада Реготи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *