热门搜索:
ghcr.io/fluent/fluent-operator/fluent-bit

ghcr.io/fluent/fluent-operator/fluent-bit:4.0.1

ghcr.iolinux/amd644.0.1大小: 未知更新于 2026年5月23日

简化 Kubernetes 中 Fluent Bit 和 Fluentd 的管理

Fluent Operator

Fluent Operator 为基于 Fluent Bit 和 Fluentd 构建日志层提供了极大的灵活性。

安装后,Fluent Operator 提供以下功能:

  • Fluent Bit 管理:自动部署和销毁 Fluent Bit DaemonSet。
  • Fluentd 管理:自动部署和销毁 Fluentd StatefulSet。
  • 自定义配置:通过标签选择输入/过滤/输出插件。
  • 动态重载:无需重启 Fluent Bit 和 Fluentd pod 即可更新配置。
  • 多租户日志隔离:Fluentd 通过 https://github.com/kube-logging/fluent-plugin-label-router 插件支持多租户日志隔离。
  • 可插拔部署组件:Fluent Bit 或 Fluentd 可单独部署。

目录

  • Fluent Operator
  • Table of contents
  • Overview
  • Fluent Bit
  • Fluentd
  • Get Started
  • Prerequisites
  • Install
  • Deploy Fluent Operator with YAML
  • Deploy Fluent Operator with Helm
  • Fluent Operator Walkthrough
  • Collect Kubernetes logs
  • Deploy the Kubernetes logging stack with YAML
  • Deploy the Kubernetes logging pipeline with Helm
  • Collect audit logs
  • Fluentd
  • Plugins
  • Fluent Bit
  • Fluentd
  • Best Practice
  • Plugin Grouping
  • Monitoring
  • Custom Parser
  • Misc
  • Custom Plugin
  • Roadmap
  • Development
  • Requirements
  • Running
  • Contributing
  • Documentation
  • Manifests
  • Community
  • About the community
  • Contact us
  • Videos and blogs

概述

尽管 Fluent Bit 和 Fluentd 都能收集、处理(解析和过滤)日志并将其转发到最终目标,但它们在不同方面各有优势。

Fluent Bit 因其轻量和高效,是日志代理的理想选择;而 Fluentd 由于其丰富的插件,在日志高级处理方面更加强大。

  • 仅 Fluent Bit 模式:如果只需收集日志并发送到最终目标,仅需 Fluent Bit 即可。
  • Fluent Bit + Fluentd 模式:如果还需要对收集的日志进行高级处理或发送到更多目标,那么还需要 Fluentd。
  • 仅 Fluentd 模式:如果需要通过 HTTP 或 Syslog 等网络接收日志,然后处理并发送到最终目标,仅需 Fluentd 即可。

Fluent Operator 包含 Fluent Bit 和 Fluentd 的 CRD 及控制器,允许您根据需要以上述 3 种模式配置日志处理管道。

Fluent Bit 将以 DaemonSet 形式部署,而 Fluentd 将以 StatefulSet 形式部署。整体工作流程如下所述:

Fluent Bit

为 Fluent Bit 定义了以下 CRD:

  • FluentBit:定义 Fluent Bit DaemonSet 及其配置。要与 FluentBit Operator 配合实现动态配置重载,需要自定义 Fluent Bit 镜像 ghcr.io/fluent/fluent-operator/fluent-bit
  • ClusterFluentBitConfig:选择集群级别的输入/过滤/输出插件,并将最终配置生成到 Secret 中。
  • FluentBitConfig:选择命名空间级别的过滤/输出/解析器和集群级别的解析器插件,并将最终配置生成到 Secret 中。
  • ClusterInput:定义集群级别的输入配置段。
  • Parser:定义命名空间级别的解析器配置段。
  • ClusterParser:定义集群级别的解析器配置段。
  • MultilineParser:定义命名空间级别的多行解析器配置段。
  • ClusterMultilineParser:定义集群级别的多行解析器配置段。
  • Filter:定义命名空间级别的过滤配置段。
  • ClusterFilter:定义集群级别的过滤配置段。
  • Output:定义命名空间级别的输出配置段。
  • ClusterOutput:定义集群级别的输出配置段。

每个 ClusterInputClusterParserClusterFilterClusterMultilineParserClusterOutput 都代表一个 Fluent Bit 配置段,由 ClusterFluentBitConfig 通过标签选择器选择。Fluent Operator 监听这些对象,构建最终配置,并创建 Secret 存储该配置,随后将其挂载到 Fluent Bit DaemonSet 中。整体工作流程如下:

为使 Fluent Bit 在配置发生变化时能够获取并使用最新配置,添加了一个名为 Fluent Bit watcher 的包装器,用于在检测到 Fluent Bit 配置变化后立即重启 Fluent Bit 进程。这样,无需重启 Fluent Bit pod 即可重载新配置。采用这种方式重载配置是因为 Fluent Bit 本身没有重载接口。更多详情请参考此https://github.com/fluent/fluent-bit/issues/365%E3%80%82

Fluentd

为 Fluentd 定义了以下 CRD:

  • Fluentd:定义 Fluentd StatefulSet 及其配置。要与 Fluentd Operator 配合实现动态配置重载,需要自定义 Fluentd 镜像 kubesphere/fluentd
  • FluentdConfig:选择集群级别或命名空间级别的输入/过滤/输出插件,并将最终配置生成到 Secret 中。
  • ClusterFluentdConfig:选择集群级别的输入/过滤/输出插件,并将最终配置生成到 Secret 中。
  • Filter:定义命名空间级别的过滤配置段。
  • ClusterFilter:定义集群级别的过滤配置段。
  • Output:定义命名空间级别的输出配置段。
  • ClusterOutput:定义集群级别的输出配置段。

快速开始

前提条件

运行 Fluent Operator 需要 Kubernetes v1.16.13+。

安装

使用 YAML 部署 Fluent Operator

安装最新稳定版本

kubectl apply -f https://github.com/fluent/fluent-operator/releases/latest/download/setup.yaml

# 您可以在 manifests/setup/kustomization.yaml 中修改命名空间
# 然后使用以下命令安装到其他命名空间
# kubectl kustomize manifests/setup/ | kubectl apply -f -

安装开发版本

kubectl apply -f https://raw.githubusercontent.com/fluent/fluent-operator/master/manifests/setup/setup.yaml

Fluent Operator 演练

有关 Fluent Operator 各种使用场景的更多信息,可参考 https://github.com/kubesphere-sigs/fluent-operator-walkthrough%E3%80%82

收集 Kubernetes 日志

本指南将配置一个日志流水线,包括 Fluent Bit DaemonSet 及其日志输入/过滤/输出配置,用于收集 Kubernetes 日志(包括容器日志和 kubelet 日志)。

[!NOTE] 开始前,需要一个运行中的 Elasticsearch v5+ 集群来接收日志数据。请务必根据您自己的 Elasticsearch 配置调整 output-elasticsearch.yaml。Kafka 和 Fluentd 输出为可选配置,默认处于关闭状态。

使用 YAML 部署 Kubernetes 日志栈

kubectl apply -f manifests/logging-stack

# 可在 manifests/logging-stack/kustomization.yaml 中修改命名空间
# 然后使用以下命令安装到其他命名空间
# kubectl kustomize manifests/logging-stack/ | kubectl apply -f -

使用 Helm 部署 Kubernetes 日志流水线

Kubernetes 日志流水线(通过 Fluent Bit 收集容器日志)默认已启用(Kubernetes: true)。如需同时部署 Fluentd 作为日志聚合层:

helm upgrade fluent-operator fluent/fluent-operator -n fluent --set fluentd.enable=true

几分钟后,您应能看到可用的索引:

$ curl localhost:9200/_cat/indices
green open ks-logstash-log-2020.04.26 uwQuoO90TwyigqYRW7MDYQ 1 1 99937 0 31.2mb 31.2mb

成功!

收集审计日志

Linux 审计框架提供了符合 CAPP(受控访问保护配置文件)的审计系统,可可靠地收集系统上任何与安全相关(或非安全相关)事件的信息。参考 manifests/logging-stack/auditd,它支持从 Linux 审计框架收集审计日志的方法。

kubectl apply -f manifests/logging-stack/auditd

# 可在 manifests/logging-stack/auditd/kustomization.yaml 中修改命名空间
# 然后使用以下命令安装到其他命名空间
# kubectl kustomize manifests/logging-stack/auditd/ | kubectl apply -f -

几分钟后,您应能看到可用的索引:

$ curl localhost:9200/_cat/indices
green open ks-logstash-log-2021.04.06 QeI-k_LoQZ2h1z23F3XiHg 5 1 404879 0 298.4mb 149.2mb

Fluentd

Fluentd 作为日志转发层,通过网络接收来自 Fluent Bit 或其他应用的日志。

有关 Fluent Operator Fluentd CRD 的各种使用场景的更多信息,可参考 https://github.com/kubesphere-sigs/fluent-operator-walkthrough#fluent-bit--fluentd-mode%E3%80%82

插件

Fluent Bit

此处可查看支持的 Fluent Bit 插件。

Fluentd

此处可查看支持的 Fluentd 插件。

该项目于2021年被Fluent社区接纳为子项目,目前是一个厂商中立、社区驱动的项目。

联系我们

欢迎加入 CNCF Slack 上的 #fluent-operator 频道与我们交流。

视频与博客

  • 从 FluentBit Operator 到 Fluent Operator:漫长的发展之路 - Benjamin Huo
  • 什么是 Fluent Operator 以及如何使用它 - Henrik Rexed
  • 深入解析 Fluent Bit Operator:Kubernetes 原生日志处理器 - Feynman Zhou 与 Dhruv Kela
  • 快速入门:5分钟了解 Fluent Operator(中文)- Dehao Cheng

镜像拉取常见问题

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

镜像拉取问题咨询请 提交工单。官方公众号:源码跳动。官方技术交流群:51517718。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。