
2022
全球分布式云大会
- 深 圳 站 -
2022全球分布式云大会·深圳站于12月21日正式召开,全球分布式云联盟携手阿里云、腾讯云、华为云、天翼云、浪潮云等联盟成员,共同打造属于分布式云计算的年终科技盛典,深度总结分布式云计算发展至今取得的科技实践成果,立足深圳、辐射华南、影响全国,以分布式云计算筑牢数字化转型的基石底座,擘画数字化深水区新商业版图!

在12月22日上午举办的“云原生开源生态及实践论坛”上,青云科技顾问级解决方案架构师 贺文红发表了题为《KubeSphere云原生可观测性之日志实践》的精彩演讲,本文为演讲内容文字实录。
一
FluentBit & Fluentd
云原生可观测性的三驾马车分别是Logging、Metrics和Tracing。Logging包括了FluentBit、 Fluentd、 Loki、 ELK;Metrics被 Prometheus占据统治地位;Tracing包括了 Jaeger、 zipkin、 SkyWalking、 OpenTelemetry。
日志要求采集的性能更高、占用资源更小、更强的功能,因此可以选择FluentBit & Fluentd来实现这三个目标。FluentBit的特点是高效、轻量,专注于性能;Fluentd的插件式架构,拥有500+插件,且具备高稳定性。
使用FluentBit 采集日志,利用Fluentd强大的插件能力实现复杂的功能,例如租户级的日志收集;由Fluentd社区维护,一脉相承,无缝对接。
FluentBit & Fluentd的使用也存在一定的问题,首先是部署不够便捷,其次是配置比较繁琐,基于文件的配置方式不是云原生环境下的最佳选择,修改配置需要重启。
二
Fluent Operator
基于FluentBit & Fluentd的使用问题,青云科技开源了Fluent Operator,它是一款FluentBit & Fluentd管理工具。在管理方面,Fluent Operator以CRD的方式创建和销毁FluentBit 和 Fluentd;通过CRD自定义FluentBit & Fluentd的配置;配置支持动态加载,无需重新启动即可更新配置。
Fluent Operator的发展历程
2019 年1月21日,KubeSphere 社区为了满足以云原生的方式管理 Fluent Bit 的需求开发了 Fluentbit Operator,并在 2020年2月17日发布了v0.1.0 版本。此后产品不断迭代,在 2021 年8月4日 正式将Fluentbit Operator捐献给Fluent社区,2022年3月25日发布v1.0.0版本,正式更名Fluent Operator。
Fluentbit Operator
FluentBit Operator基于脚手架模式开发, 通过CRD创建和管理Fluent Bit Pod,通过监听CRD 的变化动态更新Fluent Bit Pod 和 Fluent Bit 配置。
FluentBit Operator 定义的 CRD 包括:
FluentBit:用于创建 Fluent Bit DaemonSet。
FluentBitConfig:用于选择 FluentBit Operator 需要管理的插件。
Input:用于定义 Fluent Bit Input 插件。
Parser:用于定义Fluent Bit Parser 插件。
Filter:用于定义Fluent Bit Filter 插件。
Output:用于定义Fluent Bit Output 插件。

采集和转发
Fluent Bit 与 Fluentd 均可以采集日志。
单独部署时,可以通过 Fluent Bit 的 intput 插件或者 Fluentd 的 forward 以及 http 等插件来满足对日志收集的需求。两者结合时,Fluentd 可使用 forward 接受 Fluent Bit 的日志流转发。
在性能方面,Fluent Bit 相比 Fluentd 更轻量,内存消耗更小,所以主要由 Fluent Bit 负责采集与转发日志。在各个节点上通过以 DaemonSet 形式安装的 Fluent Bit 来收集和转发日志。
过滤
日志收集的数据往往过于杂乱与冗余,这要求日志处理中间件提供对日志信息进行过滤和处理的能力。Fluent Bit 或 Fluentd 均支持 filter 插件,用户可以根据自身需求,整合和定制日志数据。
输出
Fluent Bit output 或 Fluentd output 插件将处理后的日志信息输出到多个目的地,目的地可以是 Kafka、Elasticsearch 等第三方组件。
Fluentbit Operator模式介绍
1 Fluent Bit Only 模式
Fluent Bit Only 将只启用轻量级的 Fluent Bit 对日志进行采集、处理以及转发,主要针对规模较小的集群,数据量较少,对日志的要求不高的场景。
2 Fluentd only 模式
如果需要通过网络以 HTTP 或 Syslog 等方式接收日志,然后将日志处理并发送到最终的目的地,则只需要 Fluentd。常用场景是联邦集群收集member集群的日志。
3 Fluent Bit + Fluentd 模式
主要应用于联邦日志处理,对收集到的日志进行一些高级处理或者发送到更多的sink,则适合使用 Fluent Bit+Fluentd模式。
CRD介绍
在Fluent Bit CRD中每个ClusterInput、 ClusterParser、ClusterFilter、ClusterOutput 代表一个 Fluent Bit 配置部分,由 ClusterFluentBitConfig 标签选择器选择。Fluent Operator 监视这些对象,构建最终配置,最后创建一个Secret来存储安装到Fluent Bit DaemonSet中的配置。整个工作流程如下所示:

多租户日志隔离
从上面CRD的定义可以看出,Fluentd的config及插件的CRD分成了cluster级别与 namespace 级别的 CRD。通过将CRD定义为两种范围,借助Fluentd的label router插件,就可以达到多租户隔离的效果。
日志需求的特点
Fluent Operator支持docker、containerd. crio等多种容器运行时,支持多租户日志收集,支持收集节点上系统日志,支持多集群联邦的日志管理,支持将日志输出到多种目的地和日志告警通知。


- 媒 体 矩 阵 -




