如何从 fluent-bit 日志记录中排除命名空间

Ore*_*ren 8 kubernetes kubernetes-namespace fluent-bit

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

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

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

iam*_*hek 12

我认为以下输入插件配置可以做到这一点:

 [INPUT]
        Name              tail
        Path              /var/log/containers/*.log
        Exclude_Path      /var/log/containers/*_<myappnamespace>_*.log,/var/log/containers/*_<myappnamespace2>_*.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
Run Code Online (Sandbox Code Playgroud)

在这里找到它:https://github.com/ Fluent/fluence-bit /issues/758

Exclude_Path属性定义将忽略日志的命名空间的名称。对于多个日志,请使用逗号分隔


mar*_*rio 5

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

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

文档中只有 a 的示例,separate Pod definition但可以肯定的是,您应该能够Pod templateDeployment定义中应用它,这样您就不必使用您提供的 kubectl 命令单独将其应用到每个 Pod 或某个命名空间中的每个 Pod。


Log*_*Mzz 5

您已经通过三个过滤器的组合实现了名称空间排除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
Run Code Online (Sandbox Code Playgroud)