k8s log apoll

Fluent Bit

Fluentd

Operator

Fluent Operator 为 Fluent Bit 和 Fluentd

CRD

fluentbit 分组下包含以下 6 个 CRDs:

  • Fluentbit CRD 定义了 Fluent Bit 的属性,比如镜像版本、污点、亲和性等参数。
  • ClusterFluentbitConfig CRD 定义了 Fluent Bit 的配置文件。
  • ClusterInput CRD 定义了 Fluent Bit 的 input 插件,即输入插件。通过该插件,用户可以自定义采集何种日志。
  • ClusterFilter CRD 定义了 Fluent Bit 的 filter 插件,该插件主要负责过滤以及处理 fluentbit 采集到的信息。
  • ClusterParser CRD 定义了 Fluent Bit 的 parser 插件,该插件主要负责解析日志信息,可以将日志信息解析为其他格式。
  • ClusterOutput CRD 定义了 Fluent Bit 的 output 插件,该插件主要负责将处理后的日志信息转发到目的地。

fluentd 分组下包含以下 7 个 CRDs:

  • Fluentd CRD 定义了 Fluentd 的属性,比如镜像版本、污点、亲和性等参数。
  • ClusterFluentdConfig CRD 定义了 Fluentd 集群级别的配置文件。
  • FluentdConfig CRD 定义了 Fluentd 的 namespace 范围的配置文件。
  • ClusterFilter CRD 定义了 Fluentd 集群范围的 filter 插件,该插件主要负责过滤以及处理 Fluentd 采集到的信息。如果安装了 Fluent Bit,则可以更进一步的处理日志信息。
  • Filter CRD 该 CRD 定义了 Fluentd namespace 的 filter 插件,该插件主要负责过滤以及处理 Fluentd 采集到的信息。如果安装了 Fluent Bit,则可以更进一步的处理日志信息。
  • ClusterOutput CRD 该 CRD 定义了 Fluentd 的集群范围的 output 插件,该插件主要负责将处理后的日志信息转发到目的地。
  • Output CRD 该 CRD 定义了 Fluentd 的 namespace 范围的 output 插件,该插件主要负责将处理后的日志信息转发到目的地。

部署形式

  • Fluent Bit only 模式:如果您只需要在收集日志并在简单处理后将日志发送到最终目的地,您只需要 Fluent Bit。
  • Fluentd only 模式:如果需要通过网络以 HTTP 或 Syslog 等方式接收日志,然后将日志处理并发送到最终的目的地,则只需要 Fluentd。
  • Fluent Bit + Fluentd 模式:如果你还需要对收集到的日志进行一些高级处理或者发送到更多的 sink,那么你可以组合使用 Fluent Bit 和 Fluentd。

forward

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat <<EOF | kubectl apply -f -
apiVersion: fluentbit.fluent.io/v1alpha2
kind: ClusterOutput
metadata:
name: fluentd
labels:
fluentbit.fluent.io/enabled: "true"
fluentbit.fluent.io/component: logging
spec:
matchRegex: (?:kube|service)\.(.*)
forward:
host: fluentd.fluent.svc
port: 24224
EOF

kafka

output kafka
ns output kafka topic
cat <<EOF | kubectl apply -f -
apiVersion: fluentd.fluent.io/v1alpha1
kind: ClusterFluentdConfig
metadata:
  name: cluster-fluentd-config-kafka
  labels:
    config.fluentd.fluent.io/enabled: "true"
spec:
  watchedNamespaces:
  - kube-system
  - default
  clusterFilterSelector:
    matchLabels:
      filter.fluentd.fluent.io/type: "k8s"
      filter.fluentd.fluent.io/enabled: "true"
  clusterOutputSelector:
    matchLabels:
      output.fluentd.fluent.io/type: "kafka"
      output.fluentd.fluent.io/enabled: "true"
---
apiVersion: fluentd.fluent.io/v1alpha1
kind: ClusterFilter
metadata:
  name: cluster-fluentd-filter-k8s
  labels:
    filter.fluentd.fluent.io/type: "k8s"
    filter.fluentd.fluent.io/enabled: "true"
spec:
  filters:
  - recordTransformer:
      enableRuby: true
      records:
      - key: kubernetes_ns
        value: ${record["kubernetes"]["namespace_name"]}
---
apiVersion: fluentd.fluent.io/v1alpha1
kind: ClusterOutput
metadata:
  name: cluster-fluentd-output-kafka
  labels:
    output.fluentd.fluent.io/type: "kafka"
    output.fluentd.fluent.io/enabled: "true"
spec:
  outputs:
  - kafka:
      brokers: my-cluster-kafka-bootstrap.default.svc:9091,my-cluster-kafka-bootstrap.default.svc:9092,my-cluster-kafka-bootstrap.default.svc:9093
      useEventTime: true
      topicKey: kubernetes_ns
EOF
  
点击打赏
文章目录
  1. 1. Fluent Bit
  2. 2. Fluentd
  3. 3. Operator
    1. 3.1. CRD
    2. 3.2. 部署形式
载入天数...载入时分秒... ,