fluentd收集k8s日志

Fluentd介绍

Fluentd是一个是一个开源的日志收集和传输工具,旨在解决日志数据的收集、传输和处理问题,它可以收集来自于各种系统或应用的日志,转化为用户指定的格式后,转发到用户所指定的日志存储系统之中。

Fluentd特点

使用JSON进行统一日志记录:Fluentd尝试尽可能地将数据结构化为JSON:这允许Fluentd 统一处理日志数据的所有方面:收集,过滤,缓冲和跨多个源和目标(统一日志层)输出日志。使用JSON可以更轻松地进行下游数据处理,因为它具有足够的结构,可以在保留灵活模式的同时进行访问。
可插拔架构:Fluentd拥有灵活的插件系统,允许社区扩展其功能。我们的500多个社区贡献插件连接了数十个数据源和数据输出。通过利用插件,您可以立即开始更好地使用日志。
所需的资源较少: Fluentd是用C语言和Ruby组合编写的,只需要很少的系统资源。vanilla实例运行30-40MB内存,可处理13,000个事件/秒/核心。
内置可靠性:Fluentd支持基于内存和文件的缓冲,以防止节点间数据丢失。Fluentd还支持强大的故障转移功能,可以设置为高可用性。

Fluentd对比Filebeat

Fluentd 是一个日志收集和聚合的工具,它支持多种数据输入和输出,并提供了丰富的插件和过滤器来处理和转换数据。Fluentd 通过流水线的方式处理日志数据,可以灵活地构建复杂的数据处理流程。Fluentd 还提供了内置的缓存机制,可以减少数据丢失的风险。同时,Fluentd 是一个轻量级的工具,对系统资源的占用较小。
Filebeat 是 Elastic 公司开源的一款轻量级日志数据采集器,旨在收集、解析和转发各种类型的日志数据。它支持多种数据源采集并内置了七十多种场景服务日志过滤处理模块,并且能够自动发现新的日志文件。虽然也支持数据解析,但解析器目前仅有四十多种,仅能完成简单的数据解析操作。Filebeat 具有较低的资源消耗,并且支持高可用性和故障转移。Filebeat 可以将日志数据转发到多个输出目的地,如 Elasticsearch、Logstash 或 Kafka 等。
两者在设计理念上的区别主要在于 Fluentd 更侧重于数据处理和转换,而 Filebeat 更侧重于数据采集和传输。Fluentd 更适用于需要进行复杂数据处理和转换的场景,而 Filebeat 则更适用于简单的日志数据采集和转发场景。如果你需要一个轻量级的工具来处理海量日志数据,Fluentd 可能会更合适;如果你只需要一个简单的日志采集器来快速收集和转发日志数据,那么 Filebeat 可能会更适合你的需求。

Fluentd部署与配置

DaemonSet部署

请使用GIT从命令行获取存储库的副本:

git clone https://github.com/fluent/fluentd-kubernetes-daemonset

查看文件

cat fluentd-daemonset-elasticsearch.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd
  namespace: kube-system
  ...
spec:
    ...
    spec:
      containers:
      - name: fluentd
        image: quay.io/fluent/fluentd-kubernetes-daemonset
        env:
          - name:  FLUENT_ELASTICSEARCH_HOST
            value: "elasticsearch-logging"
          - name:  FLUENT_ELASTICSEARCH_PORT
            value: "9200"
          - name:  FLUENT_ELASTICSEARCH_SSL_VERIFY
            value: "true"
          - name:  FLUENT_ELASTICSEARCH_SSL_VERSION
            value: "TLSv1_2"
        ...

 

修改FLUENT_ELASTICSEARCH_HOST参数,改成已经部署的es服务的url

Environment Variable Description Default

FLUENT_ELASTICSEARCH_HOST

Specify the host name or IP address.

elasticsearch-logging

FLUENT_ELASTICSEARCH_PORT

Elasticsearch TCP port

9200

FLUENT_ELASTICSEARCH_SSL_VERIFY

Whether verify SSL certificates or not.

true

FLUENT_ELASTICSEARCH_SSL_VERSION

Specify the version of TLS.

TLSv1_2