有没有办法排除某些命名空间fluent-bit
?我想排除某些命名空间,这样fluent-bit
就不会将在这些命名空间中创建的所有日志都转发到 ELK。
除了向该命名空间中的每个 pod 添加注释之外,还有其他方法吗?我知道您可以通过 kubectl 更新命名空间中的所有 pod 注释。
kubectl annotate pods --namespace=pks-system --all fluentbit.io/exclude='true'
有没有办法排除某些命名空间fluent-bit
?我想排除某些命名空间,这样fluent-bit
就不会将在这些命名空间中创建的所有日志都转发到 ELK。
除了向该命名空间中的每个 pod 添加注释之外,还有其他方法吗?我知道您可以通过 kubectl 更新命名空间中的所有 pod 注释。
kubectl annotate pods --namespace=pks-system --all fluentbit.io/exclude='true'
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.
您已经通过三个过滤器的组合实现了名称空间排除kubernetes
,nest
并且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
您必须阅读以下内容:https ://docs.fluentbit.io/manual/filter/kubernetes#kubernetes-annotations 在文档中:“请求 Fluent Bit 排除或不排除 Pod 生成的日志。只有在以下情况下才会处理此选项Fluent Bit 配置(Kubernetes 过滤器)已启用选项 K8S-Logging.Exclude。”