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

vxqlmq5t  于 2023-01-29  发布在  Kubernetes
关注(0)|答案(4)|浏览(361)

有没有办法排除fluent-bit中的某些名称空间?我想排除某些名称空间,这样fluent-bit就不会将在这些名称空间中创建的所有日志转发给ELK。
除了给名称空间中的每个pod添加注解之外,还有什么方法可以做到这一点吗?我知道您可以通过kubectl更新名称空间中的所有pod注解。
kubectl注解pod--名称空间=pks-system --所有fluentbit.io/exclude= 'true'

6l7fqoea

6l7fqoea1#

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

[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

在此找到:https://github.com/fluent/fluent-bit/issues/758
Exclude_Path属性定义日志将被忽略的名称空间的名称。对于多个日志,请使用逗号分隔

dgtucam1

dgtucam12#

根据官方的Fluent Bit文档,目前它实际上是请求日志处理器跳过某些Pod的日志的唯一方式。我搜索了它,除了这个片段什么也没找到。
除此之外,他们的GitHub项目中甚至有一个feature request,所以现在我们可以希望它会在未来的版本中提供。
在文档中只有separate Pod definition的示例,但可以肯定的是,您应该能够将其应用于Deployment定义中的Pod template,这样您就不必使用您提供的kubectl命令将其分别应用于每个Pod或特定命名空间中的每个Pod。

ilmyapht

ilmyapht3#

您已经使用三个过滤器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
plupiseo

plupiseo4#

你一定要读一下:https://docs.fluentbit.io/manual/filter/kubernetes#kubernetes-annotations文档中:* “请求Fluent Bit排除或不排除Pod生成的日志。仅当Fluent Bit配置(Kubernetes过滤器)已启用选项K8S-Logging. Exclude时,才会处理此选项。"*

相关问题