Хроносфера спонсировала этот пост.
Примечание редактора: Эта статья представляет собой отрыв из книги Мэннинга «Свободно с Кубернетами»: Глава 1, введение в бегство.
Первая статья в этой серии — «Fluent Bit, специализированный инструмент захвата и распределения событий» — посмотрела, почему важен беглый бит. Теперь давайте рассмотрим некоторые основные концепции, которые влияют на почти все аспекты бегства. Самая важная вещь, с которой мы столкнулись, — это событие. Мы также должны рассмотреть, что свободно делает, а не делает события полезными.
Другая ключевая концепция в беглевых битах — плагины. По мере того, как мы продвигаемся через книгу, мы углубимся в плагины, но на этом этапе я опишу их как строительные блоки функциональных возможностей Fluent Bit.
Сердечные элементы Fluent Bit
Чтобы взаимодействовать с событиями Fluent Bit, независимо от того, представляют ли они события журнала, следы или метрики, мы должны понять, как каждое событие представлено в рамках BTENT BIT, что так же, как FluentD, с тремя обязательными элементами.
Как показано на рисунке ниже, беглый бит имеет три основных элемента с некоторыми дополнительными элементами, которые непрозрачны для нас прямо сейчас:
1 Метаданные -Метаданные-это список паров ключевых значений с обязательным ключом, называемым TAG и соответствующим значением. Тег — это логическое имя, связанное с событиями. Мы используем тег для маршрутизации событий на правильную операцию. (В книге «Свободно свободно с Kubernetes», мы вводим стратегии, которые позволяют нам манипулировать тегом и использовать интеллектуальные соглашения о именованиях, чтобы помочь нам.)
В Fluent Bit v1 и Fluentd метаданные были только тегом. Чтобы увеличить гибкость и позволить беглую биту для нести другие типы событий (и следы), беглый бит v1.9 изменил метаданные, чтобы удерживать дополнительные пары ключевых значений о природе содержания записи, таких как тип события. (Как вы увидите в книге, мы сможем получить доступ к значению тега, не имея в виду тот факт, что он является частью метаданных, как и Fluent Bit V1 и Fluentd.)
В Fluent Bit v1 и Fluentd метаданные были только тегом. Чтобы увеличить гибкость и позволить беглую биту для нести другие типы событий (и следы), беглый бит v1.9 изменил метаданные, чтобы удерживать дополнительные пары ключевых значений о природе содержания записи, таких как тип события. Как мы увидим позже в книге, мы можем получить доступ к значению тега, не ссылаясь
2 Временная метка — События без временной метки имеют ограниченную ценность. Без метки времени мы не можем определить, является ли проблема актуальной или новой, потому что у нас нет смысла, когда произошло событие. Мы не можем определить, является ли событие причиной или следствием, потому что мы не знаем порядок, в котором произошло вещи. —
3 Записывать — Запись содержит данные события (журнал, метрика или трассировка). Возможность получить доступ и манипулировать записи в различных плагинах зависит от типа плагина и метаданных, описывающих запись. Когда запись содержит журнал, беглый бит, в зависимости от ввода и анализа, рассматривает значение записи как список пар клавишных значений или одного блока текста. Мы можем извлечь контент и преобразовать полезную нагрузку в JSON, среди прочего. Когда мы не обрабатываем событие, запись эффективно проводится путем сериализации его с помощью библиотеки MessagePack.
Метаданные также могут обозначать, что запись представляет показатели или следы. В этом случае запись принимает следующие характеристики:
- Метрики -Когда мы отправляем и получаем метрики, данные соответствуют формату Prometheus (не JSON Structure). Но бегство дает нам средства для извлечения и манипулирования данными метрик. Внутренне метрики обрабатываются библиотекой под названием CMERIC, которую другие проекты начинают использовать.
- Следы — Следы также обрабатываются как специальная полезная нагрузка и могут быть превращены в запись, в которой вы можете взаимодействовать.
Мы более подробно рассмотрим эти аспекты, исследуем эти источники данных. Хотя движение содержания между видимой записи и непрозрачной структурой сегодня не совсем свободнее, обработка этого движения со временем станет проще.
Структура события журнала
На рисунке ниже показана структура данных свободного бита v1.9, а затем, наряду с эквивалентной структурой V1 Fluent Bit и Fluentd. Хотя разница тонкая, она заметна при обработке не-лаговых событий. Стоит отметить, что в исключительной ситуации с событиями журнала кэширования в файле с версией бегемого бита до 1,9, пытаясь получить версию бегемота после 1,9, чтобы прочитать эти кэшированные файлы, приведет к ошибкам.
Структура события журнала для бегемого бита v1.x и fluentd (слева) и бегство бегемое из v1.9 (справа)
Логическая архитектура
На рисунке ниже показана архитектура логического бегемого бита. Эта диаграмма помогает ориентироваться в возможностях, которые мы исследуем в рамках бегства. На рисунке показаны эти логические компоненты:
1. Входной плагин (слушатель), плагин ввода (вытянут) — Многие представления бегемого бита не дифференцируют типы входных плагинов. Хотя контракт между плагином и ядром бегемого бита (обработка трубопровода) неизменен, существуют различия в том, как реализован плагин, которые влияют на конфигурацию и настройки.
Сетевые входы могут быть описаны как слушатели; Мы подключаемся к сети, и когда данные получены, мы должны обработать их. Большие, внезапные шипы здесь могут вызвать обратное давление; Исходная система, вызывая беглую биту, не может продолжаться, пока мы не потребляем событие.
Вытянутые события, такие как те, которые захватывают события журнала из файла, как они написаны, требуют периодически опросить файл, чтобы определить, был ли добавлен какой -либо новый контент. Реализация входного плагина может диктовать пропускную способность системы.
2. Пользовательский плагин ввода — Эта возможность можно охарактеризовать как плагин с протяженным или слушателем. Поскольку у нас есть поддержка сетевых источников с HTTP — если у нас нет специализированных кодировков, которые лучше всего обрабатывают плагином ввода, а не декодером (специализированная функция, доступная для анализаторов) — эта функция, вероятно, примет вытянутую модель. Пользовательский плагин отличается от других плагинов, потому что он не является частью стандартного выпуска битов — любой плагин, встроенный непосредственно в двоичный файл третьей стороной или через параметры расширения.
Анализатор — Это обеспечивает средства для преобразования полученного контента в значимые данные, такие как извлечение важных значений из записи или преобразование его в JSON. Доступен диапазон предвзятых анализаторов; Многие из этих анализаторов являются специализацией регулярных выражений. Парсеры обычно используются в сочетании с фильтрами, но некоторые входные плагины также могут их использовать.
Буфер — В зависимости от плагина, буферизация может использоваться в нескольких местах. Логически, он хорошо подходит здесь, так как основная цель буферизации состоит в том, чтобы позволить нам сгибаться к различиям в вводе и выходных характеристиках, которые могут возникнуть, такие как пики в выходах из наших источников или замедление потребления наших выходов. Следовательно, буфер предотвращает свободу от потенциального ограничения пропускной способности или потери данных. Если вы чувствительны к риску потери данных, вы можете переключить буфер на использование хранилища файлов, которое можно прочитать, когда процесс пробега перезапускается. Этот подход имеет стоимость производительности. Буфер имеет уровень интерфейса хранения, который управляет данными, входящими в буфер и его физическую реализацию (файл или память); Он также взаимодействует с любыми соответствующими потоковыми процессорами.
Фильтр, пользовательский фильтр — Фильтры — это тяжелые атлеты трубопровода, предоставляющие средства для взаимодействия и манипулирования событиями, которые были получены. Фильтры приносят и возвращают события, которые они обрабатывают в буфер. Нормальные фильтры полностью основаны на конфигурации, но пользовательские фильтры могут быть реализованы двумя способами:
- Типичный подход — вызывая сценарии Lua.
- Мы можем реализовать более требовательные или сложные фильтры с C, Go и Webassembly, следуя подходу, используемому пользовательскими плагинами ввода и вывода.
Обработка потоков — Обработка потоков представляет, как мы настраиваем новые, расширенные аналитические возможности. Мы можем зацикнуть данные из этого аналитического процесса назад в качестве входного ввода, чтобы мы могли использовать аналитические значения для обогащения обработки, такие как создание данных временных рядов на основе полученных событий.
Выходной плагин, пользовательский выходной плагин — Как и в случае входов, мы отделили эти типы плагинов, чтобы привлечь внимание к расширяемости. Роль выходного плагина состоит в том, чтобы извлечь события из буфера, а затем хранить их или передать их сторонним решению для дальнейшей обработки (это может быть хранение данных, но мы можем вывести другие экземпляры Fluentd или Fluent Bit, чтобы делегировать или агрегировать работу), в зависимости от реализации плагина.
Мы определили логические компоненты более гранулярно, чем официальная документация, чтобы помочь вам понять их поведенческие характеристики.
Официальная документация фокусируется главным образом на вводе, фильтре и выходе, трех из четырех горизонтальных групп на рисунке ниже.
Логическая архитектура битов свободного, с блоками, представляющими логические особенности, и линии, представляющие возможный поток событий. Стандартные группировки битов наложены, но я разделял и проиллюстрировал буферы, немного по -разному, поскольку их позиции более логичны, чем то, как они вписываются в базу кода.
Хроносфера — это платформа наблюдения, созданная для контроля в современном, контейнерном мире. Признанная в качестве лидера крупными аналитическими фирмами, хроносфера дает клиентам сосредоточиться на данных и идеях, которые имеют значение для снижения сложности данных, оптимизировать затраты и быстрее решать проблемы. Узнайте больше новейших из хроносферных трендовых историй Youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Фил Уилкинс провел более 30 лет в индустрии программного обеспечения, общий опыт работы в бизнесе и средах от транснациональных корпораций до стартапов программного обеспечения и потребительских организаций до консультаций. Он начинал как разработчик в режиме реального времени, критически важных решений и работал … Подробнее от Фила Уилкинса