Что нужно знать перед созданием плагинов Fluent Bit с помощью Go

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

Примечание редактора: Следующая статья представляет собой отрывок из книги Мэннинга «Fluent Bit with Kubernetes», практического руководства по оптимизации систем для Kubernetes — от фундаментальной конфигурации до расширенной интеграции для маршрутизации и обработки журналов, метрик и трассировки. В этом отрывке из статьи основное внимание уделяется плагинам Fluent Bit на основе Go. Изучите работу с SQL-подобными выражениями над сигналами и решите, когда и как создавать собственные плагины, загрузив книгу целиком здесь. Go является наиболее доминирующим языком в проектах Cloud Native Computing Foundation (CNCF), предоставляя преимущества собственной двоичной производительности, сохраняя при этом особенности таких языков, как Java, в форме управления памятью, абстракций и простоты разработки. Помогает то, что создатели Kubernetes (Google) являются движущей силой разработки Go.

Акцент на преимуществах производительности встроенных двоичных файлов для облачных решений, особенно в гипермасштабировании, делает важной простую прямую интеграцию между C/C++ и Go, поскольку ядро ​​Linux написано на C/C++, и оно занимает второе место после Go с точки зрения собственных двоичных языков, используемых в проектах CNCF.

Плагины Go взаимодействуют с платформой Fluent Bit через модуль Goproxy в Fluent Bit. На момент написания этой статьи Goproxy и связанный с ним код привязки Go предоставляют только плагины ввода и вывода, а не интерфейсы метода фильтра.

Организационные и технические преимущества сборки на Go

Использование Go и настройка добавления плагинов Go в Fluent Bit дает ряд организационных и технических преимуществ:

  • Проект с открытым исходным кодом не диктует циклы выпуска и процессы разработки.
  • Поскольку результат предоставляется в виде собственного двоичного файла, плагин можно предлагать без раскрытия проприетарного кода или интеллектуальной собственности.
  • Специализированные варианты использования идеально подходят для нишевых вариантов использования, которые отражают конкретные потребности организации или нишевые требования. Подобные варианты использования часто имеют определенный уровень прав интеллектуальной собственности (даже если они являются косвенными, когда речь идет о поддержке функциональности).

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

  • Плагины могут быть реализованы для удовлетворения конкретных внутренних потребностей, не уделяя должного внимания сообществу. Если в нашей организации есть определенный стандарт соглашений об именах, мы можем внедрить его в плагин, не беспокоясь о том, отвечает ли он более широким потребностям сообщества.

Технические преимущества использования Go для создания плагина:

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

Эксплуатационные недостатки плагинов Fluent Bit на основе Go

Недостатки скорее функциональны, чем специфичны для самой разработки кода. Эти проблемы включают в себя следующее:

  • На момент написания этой статьи интерфейсы фильтров недоступны.
  • Если команды разработчиков не работают с Go, остаются накладные расходы на реализацию и поддержку таких процессов, как непрерывная интеграция. Нам необходимо включить регрессионное тестирование для основных и второстепенных изменений.
  • Если мы намерены сделать плагин открытым исходным кодом, он вряд ли получит такой же уровень внимания, как основные репозитории Fluent Bit. В результате большая часть бремени обслуживания ляжет на поставщика плагинов.
  • Пользователям приходится прилагать дополнительные усилия при развертывании нашего плагина в существующих средах, что может быть проблематично, если клиенты используют готовые платформы, такие как OpenShift.
  • Объем платных услуг поддержки может быть неоднозначным, поскольку предложения сторонней поддержки обычно не распространяются на сторонние плагины.
  • Плагин должен подвергаться постоянным периодическим обновлениям, даже если решение стабильное и зрелое, чтобы предотвратить возможное впечатление, что плагин устарел.
  • Необходимы дополнительные усилия по разработке для перевода между типами данных C и Go. Нам придется использовать другие библиотеки и фреймворки языка Go.
  • Возможно, нам придется пересобрать Fluent Bit с включенной поддержкой Go (cmake -DFLB_ DEBUG=On -DFLB_PROXY_GO=On) в зависимости от используемой нами сборки Fluent Bit. Обратите внимание, что для образов, предоставленных проектом Fluent Bit, этот флаг сборки включен по умолчанию. ПРИМЕЧАНИЕ. Ресурсы для разработки на основе Go доступны, включая примеры реализаций и служебную библиотеку Go, упрощающую обходной путь для интерфейса Go-C.

Если вы хотите глубже узнать, как процессоры Fluent Bit могут изменять метрики, трассировки и журналы, включая SQL-подобные выражения для сигналов, когда использовать собственный плагин и как выбирать между различными технологиями реализации, загрузите полную книгу «Fluent Bit with Kubernetes». В оставшейся части этой главы вы получите практическое и полное понимание ландшафта подключаемых модулей, что позволит вам уверенно проектировать, создавать и использовать собственные расширения в своих собственных средах.

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

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

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

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

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