8

有没有办法排除某些命名空间fluent-bit?我想排除某些命名空间,这样fluent-bit就不会将在这些命名空间中创建的所有日志都转发到 ELK。

除了向该命名空间中的每个 pod 添加注释之外,还有其他方法吗?我知道您可以通过 kubectl 更新命名空间中的所有 pod 注释。

kubectl annotate pods --namespace=pks-system --all fluentbit.io/exclude='true'

4

4 回答 4

4

I think the following input plugin configuration can do this:

 [INPUT]
        Name              tail
        Path              /var/log/containers/*.log
        Exclude_Path      /var/log/containers/*_<myappnamespace>_*.log
        Tag               kube.infra.<namespace_name>.<pod_name>.<container_name>
        Tag_Regex         (?<pod_name>[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*)_(?<namespace_name>[^_]+)_(?<container_name>.+)-
        Parser            cri
        DB                /var/log/flb_kube_infra.db
        Mem_Buf_Limit     500KB
        Skip_Long_Lines   On
        Refresh_Interval  10

Found it here: https://github.com/fluent/fluent-bit/issues/758

The Exclude_Path property defines the name of the namespace for which logs will be ignored.

于 2020-05-13T11:02:15.697 回答
3

您已经通过三个过滤器的组合实现了名称空间排除kubernetesnest并且grep

[FILTER]
Name                kubernetes
Match               kube.*
Kube_URL            https://kubernetes.default.svc:443
Kube_CA_File        /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
Kube_Token_File     /var/run/secrets/kubernetes.io/serviceaccount/token
Kube_Tag_Prefix     kube.var.log.containers.
Merge_Log           Off
Merge_Log_Key       log_processed
K8S-Logging.Parser  On
K8S-Logging.Exclude On

[FILTER]
Name                nest
Match               *
Wildcard            pod_name
Operation lift
Nested_under kubernetes
Add_prefix   kubernetes_

[FILTER]
Name                grep
Match               kube.*
Exclude             kubernetes_namespace_name kube-system
于 2020-05-20T07:19:21.320 回答
2

根据官方Fluent Bit文档,目前它实际上是请求日志处理器跳过某些 Pod 的日志的唯一方式。我翻遍了它,除了这个片段之外什么也没找到。

除此之外,他们的 GitHub 项目甚至提出了一个功能请求,所以现在我们希望它可以在未来的版本中使用。

文档中只有一个示例,separate Pod definition但可以肯定的是,您应该能够将其应用于Pod template定义中Deployment,因此您不必使用您提供的 kubectl 命令将其单独应用于每个 Pod 或特定命名空间中的每个 Pod。

于 2019-07-16T12:25:16.030 回答
2

您必须阅读以下内容:https ://docs.fluentbit.io/manual/filter/kubernetes#kubernetes-annotations 在文档中:“请求 Fluent Bit 排除或不排除 Pod 生成的日志。只有在以下情况下才会处理此选项Fluent Bit 配置(Kubernetes 过滤器)已启用选项 K8S-Logging.Exclude。”

于 2019-12-10T16:26:54.883 回答