云原生日志采集管理方案--Fluent Operator

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: Fluent Operator是由KubeSphere 社区于2021年捐献给Fluent 社区的,最初是为了满足以云原生的方式管理 Fluent Bit 的需求。Fluentbit Operator可以灵活且方便地部署、配置及卸载 Fluent Bit 以及 Fluentd。同时, 还提供支持 Fluentd 以及 Fluent Bit 的插件,用户可以根据实际需求进行定制化配置。

背景

Fluentd/Fluent Bit作为云原生场景的可观测采集器,致力于打造云原生场景下的日志采集方案。Fluentd/Fluent Bit官方虽然提供了一些K8s的采集部署方案,但是总体来说自动化程度不高,操作也比较繁琐。所以也就催生出了各类Operator,比较有名的是Fluent Operator、Logging Operator,本文将重点介绍Fluent Operator的原理及实战。

Fluent Operator是由KubeSphere 社区于2021年捐献给Fluent 社区的,最初是为了满足以云原生的方式管理 Fluent Bit 的需求。Fluentbit Operator可以灵活且方便地部署、配置及卸载 Fluent Bit 以及 Fluentd。同时, 还提供支持 Fluentd 以及 Fluent Bit 的插件,用户可以根据实际需求进行定制化配置。

Fluent Operator原理

整体部署形态

Fluent Bit 与 Fluentd 都有采集、处理(解析和过滤)以及输出日志的能力,两者差异表现在:Fluent Bit 相对 Fluentd 更为轻量与高效,而 Fluentd借助更丰富的插件提供了更强的数据处理能力。基于Fluent Bit、Fluentd的各自的优点,在K8s日志采集场景下,Fluent Operator 提供了多种部署模式供用户根据实际业务情况进行选择:

  • Fluent Bit only 模式:适用于采集日志后仅需要简单处理,即发送到第三方存储系统的场景。
  • Fluent Bit + Fluentd 模式:适用于采集日志后需要更高级处理,才发送到第三方存储系统的场景。
  • Fluentd only 模式:适用于以 HTTP 或 Syslog 等的方式接收日志,经过日志处理后,发送到第三方存储系统的场景。


以Fluent Bit、Fluentd模式为例,Fluent Bit以DaemonSet用于采集K8s集群内各节点上的容器日志;而Fluentd则部署为StatefulSet,接收来自Fluent Bit的请求,之后经过日志处理后发送到第三方存储系统(例如,ES、Kafka、Loki等)。一个典型的处理pipiline如下图所示,包含了将采集、转发、过滤、输出等阶段。用户可以通过CRD的方式来配置pipiline,进而构建K8s下的日志采集系统。

CRD

Fluent Bit CRDs

Fluent Bit CRDs包含了如下几种类型:

  • FluentBit: Fluent Bit DaemonSet配置定义。
  • ClusterFluentBitConfig: 选择ClusterInput、ClusterParser、ClusterFilter、ClusterOutput,并生成配置存入Secret Config。
  • ClusterInput: 集群粒度的Input插件配置。通过该插件,用户可以自定义采集的日志类型。
  • ClusterParser: 集群粒度的Parser插件配置。通过该插件进行日志解析。
  • ClusterFilter: 集群粒度的Filter插件配置。通过该插件进行日志的过滤。
  • ClusterOutput: 集群粒度的Output插件配置。该插件主要负责将处理后的日志发送到第三方存储系统。

其中,每个ClusterInput、ClusterParser、ClusterFilter、ClusterOutput 代表一个 Fluent Bit 配置段,之后Fluent Operator 根据ClusterFluentBitConfig的标签选择器进行选择。Fluent Operator将符合条件的CRD构建成最终的配置,并存入Secret Config中,最后挂在到Fluent Bit的DaemonSet中。

为了解决Fluent Bit不支持热加载配置的问题,添加了一个名为Fluent Bit watcher的包装器,用于检测到 Fluent Bit 配置更改时立即重新启动 Fluent Bit 进程,而无需重新启动 Fluent Bit的pod。

Fluentd CRDs

Fluentd CRDs包含了如下几种类型:

  • Fluentd: Fluentd Statefulset配置定义。
  • FluentdConfig: 选择namespace粒度的ClusterInput、ClusterParser、ClusterFilter、ClusterOutput,并生成配置存入Secret Config。
  • ClusterFluentdConfig: 选择集群粒度的ClusterInput、ClusterParser、ClusterFilter、ClusterOutput,并生成配置存入Secret Config。
  • Filter: namespace粒度的Filter插件配置。
  • ClusterFilter: 集群粒度的Filter插件配置。
  • Output: namespace粒度的Ouptut插件配置。
  • ClusterOutput: 集群粒度的Ouptut插件配置。

ClusterFluentdConfig为集群级别,具有watchedNamespaces字段,可以设置监听的namespace;如果不设置,则表示全局监听。FluentdConfig为namespace级别,只能监听所在的namespace的CR。通过ClusterFluentdConfig、FluentdConfig可以在namespace层面实现多租户日志隔离。

Fluent Operator实战

入门实战

代码仓库:https://github.com/fluent/fluent-operator

通过执行如下命令,可以快速实现上图的采集处理pipeline。

###### 部署Fluent Operator

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


# You can change the namespace in manifests/setup/kustomization.yaml

# and then use command below to install to another namespace

# kubectl kustomize manifests/setup/ | kubectl apply -f -


###### 部署Kubernetes logging stack

kubectl apply -f manifests/logging-stack

# You can change the namespace in manifests/logging-stack/kustomization.yaml

# and then use command below to install to another namespace

# kubectl kustomize manifests/logging-stack/ | kubectl apply -f -


完整的yaml配置相见链接。不同的yaml配置,通过tag: kube.*进行串联。

进阶实战

代码仓库:https://github.com/kubesphere-sigs/fluent-operator-walkthrough

fluent-operator-walkthrough提供了更上层的封装,针对于不同的业务场景,提供了一键部署能力。

  • Fluent Bit Only:只启用轻量级的 Fluent Bit 对日志进行采集、处理以及转发。

  • Fluent Bit + Fluentd 模式:借助 Fluentd 丰富的插件,提供更高级的日志处理能力。Fluent Operator 轻松地实现将采集的日志从 Fluent Bit 转发到 Fluentd。


参考文档

Fluent Operator:云原生日志管理的一把瑞士军刀

fluent-operator-walkthrough文档

关于iLogtail

iLogtail作为阿里云SLS提供的可观测数据采集器,可以运行在服务器、容器、K8s、嵌入式等多种环境,支持采集数百种可观测数据(日志、监控、Trace、事件等),已经有千万级的安装量。目前,iLogtail已正式开源,欢迎使用及参与共建。

GitHub:https://github.com/alibaba/ilogtail

社区版文档:https://ilogtail.gitbook.io/ilogtail-docs/about/readme

企业版官网:https://help.aliyun.com/document_detail/65018.html

钉钉群:iLogtail社区

相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
5月前
|
监控 Kubernetes Go
日志采集效能跃迁:iLogtail 到 LoongCollector 的全面升级
LoongCollector 在日志场景中实现了全面的重磅升级,从功能、性能、稳定性等各个方面均进行了深度优化和提升,本文我们将对 LoongCollector 的升级进行详细介绍。
461 86
|
3月前
|
数据采集 存储 大数据
大数据之路:阿里巴巴大数据实践——日志采集与数据同步
本资料全面介绍大数据处理技术架构,涵盖数据采集、同步、计算与服务全流程。内容包括Web/App端日志采集方案、数据同步工具DataX与TimeTunnel、离线与实时数仓架构、OneData方法论及元数据管理等核心内容,适用于构建企业级数据平台体系。
|
存储 运维 开发工具
警惕日志采集失败的 6 大经典雷区:从本地管理反模式到 LoongCollector 标准实践
本文探讨了日志管理中的常见反模式及其潜在问题,强调科学的日志管理策略对系统可观测性的重要性。文中分析了6种反模式:copy truncate轮转导致的日志丢失或重复、NAS/OSS存储引发的采集不一致、多进程写入造成的日志混乱、创建文件空洞释放空间的风险、频繁覆盖写带来的数据完整性问题,以及使用vim编辑日志文件导致的重复采集。针对这些问题,文章提供了最佳实践建议,如使用create模式轮转日志、本地磁盘存储、单线程追加写入等方法,以降低日志采集风险,提升系统可靠性。最后总结指出,遵循这些实践可显著提高故障排查效率和系统性能。
703 20
|
4月前
|
存储 运维 开发工具
警惕日志采集失败的 6 大经典雷区:从本地管理反模式到 LoongCollector 标准实践
本文总结了日志管理中的六大反模式及优化建议,涵盖日志轮转、存储选择、并发写入等常见问题,帮助提升日志采集的完整性与系统可观测性,适用于运维及开发人员优化日志管理策略。
129 5
|
2月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
A+流量分析平台是阿里集团统一的全域流量数据分析平台,致力于通过埋点、采集、计算构建流量数据闭环,助力业务提升流量转化。面对万亿级日志数据带来的写入与查询挑战,平台采用Flink+Paimon+StarRocks技术方案,实现高吞吐写入与秒级查询,优化存储成本与扩展性,提升日志分析效率。
303 1
|
5月前
|
存储 缓存 Apache
StarRocks+Paimon 落地阿里日志采集:万亿级实时数据秒级查询
本文介绍了阿里集团A+流量分析平台的日志查询优化方案,针对万亿级日志数据的写入与查询挑战,提出基于Flink、Paimon和StarRocks的技术架构。通过Paimon存储日志数据,结合StarRocks高效计算能力,实现秒级查询性能。具体包括分桶表设计、数据缓存优化及文件大小控制等措施,解决高并发、大数据量下的查询效率问题。最终,日志查询耗时从分钟级降至秒级,显著提升业务响应速度,并为未来更低存储成本、更高性能及更多业务场景覆盖奠定基础。
|
3月前
|
JSON 安全 网络安全
LoongCollector 安全日志接入实践:企业级防火墙场景的日志标准化采集
LoonCollector 是一款轻量级日志采集工具,支持多源安全日志的标准化接入,兼容 Syslog、JSON、CSV 等格式,适用于长亭 WAF、FortiGate、Palo Alto 等主流安全设备。通过灵活配置解析规则,LoonCollector 可将原始日志转换为结构化数据,写入阿里云 SLS 日志库,便于后续查询分析、威胁检测与合规审计,有效降低数据孤岛问题,提升企业安全运营效率。
|
3月前
|
运维 监控 安全
2025 年 Splunk 的 5 大替代方案:企业日志管理工具新选择
Splunk 虽强大,但高昂成本和复杂性促使企业寻找替代方案。本文推荐 2025 年五大日志管理与安全分析工具:Log360、Elastic Security、Datadog、Graylog 和 Sumo Logic,涵盖开源、云原生与高性能方向,适配不同企业需求,助你提升安全与运维效率。
198 0
|
5月前
|
消息中间件 存储 JSON
日志采集 Agent 性能大比拼——LoongCollector 性能深度测评
为了展现 LoongCollector 的卓越性能,本文通过纵向(LoongCollector 与 iLogtail 产品升级对比)和横向(LoongCollector 与其他开源日志采集 Agent 对比)两方面对比,深度测评不同采集 Agent 在常见的日志采集场景下的性能。
606 34
|
3月前
|
存储
WGLOG日志管理系统可以采集网络设备的日志吗
WGLOG日志审计系统提供开放接口,支持外部获取日志内容后发送至该接口,实现日志的存储与分析。详情请访问:https://www.wgstart.com/wglog/docs9.html

相关产品

  • 日志服务