如何从流利的日志记录中排除名称空间

时间:2019-07-14 13:40:59

标签: kubernetes fluent-bit

有没有一种方法可以排除某些特定名称空间?我想排除某些命名空间,以使流利的位不会将在这些命名空间中创建的所有日志转发给ELK。

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

  

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

4 个答案:

答案 0 :(得分:1)

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

 [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

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

Exclude_Path属性定义将忽略其日志的名称空间的名称。

答案 1 :(得分:0)

根据官方Fluent Bit文档,目前,它实际上是请求日志处理器跳过某些Pod中的日志的唯一方法。我搜索了一下,发现除了this片段之外什么都没有。

除此之外,他们的GitHub项目上甚至提出了feature request,所以现在我们希望它在将来的版本中可用。

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

答案 2 :(得分:0)

您必须阅读以下内容:https://docs.fluentbit.io/manual/filter/kubernetes#kubernetes-annotations 在文档上:“请求Fluent Bit排除或不显示Pod生成的日志。仅当Fluent Bit配置(Kubernetes筛选器)启用了K8S-Logging.Exclude选项时,才会处理此选项。”

答案 3 :(得分:0)

通过三个过滤器kubernetesnestgrep的组合,您已经实现了命名空间排除

[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