Как исключить пространство имен из ведения журнала fluent-bit

Есть ли способ исключить определенные пространства имен в fluent-bit? Я хотел бы исключить определенные пространства имен, чтобы fluent-bit не перенаправлял все журналы, созданные в этих пространствах имен, в ELK.

Есть ли способ сделать это, кроме добавления аннотации к каждому модулю в этом пространстве имен? Я знаю, что вы можете обновить все аннотации модулей в пространстве имен через kubectl.

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

Из документации fluentbit это единственный способ сделать это.

Ijaz Ahmad 14.07.2019 19:15

Кстати, в качестве документ описывает вы можете разделять журналы запятыми по их пространствам имен, например Exclude_Path /var/log/containers/*_kube-system_*.log,/var/log/containers/‌​*_kubernetes-dashboa‌​rd_*.log,/var/log/co‌​ntainers/*_yourspeci‌​alnamespace_*.log, что работает для меня.

BentCoder 11.08.2021 21:16
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
8
2
10 971
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Согласно официальной Fluent Bit документации, на данный момент это фактически единственный способ запросить, чтобы обработчик журналов пропускал журналы из определенных модулей. Я просмотрел его и не нашел ничего, кроме фрагмента это.

В дополнение к этому, в их проекте GitHub даже поднят запрос функции, так что пока мы можем надеяться, что он будет доступен в будущем выпуске.

В документация есть только пример separate Pod definition, но наверняка вы сможете применить его к Pod template в определении Deployment, поэтому вам не нужно применять его к каждому поду отдельно или к каждому поду в определенном пространстве имен с помощью предоставленной вами команды kubectl. .

Вы должны прочитать это: https://docs.fluentbit.io/manual/filter/kubernetes#kubernetes-аннотации В документации: «Запрос к Fluent Bit, чтобы исключить или нет журналы, созданные модулем. Этот параметр будет обработан, только если в конфигурации Fluent Bit (фильтр Kubernetes) включен параметр K8S-Logging.Exclude».

Спасибо. Аннотации соответствуют способу ведения дел Kubernetes. Было бы неплохо, если бы фильтр поддерживал не только возможность исключения аннотации Pod, но и аннотацию Pod для включения... и аннотации пространства имен.

Darius X. 27.10.2020 21:19

Это должен быть предпочтительный ответ

Digital Stoic 29.06.2021 10:06

Я думаю, что следующая конфигурация входного плагина может сделать это:

 [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 определяет имя пространства имен, для которого журналы будут игнорироваться.

Вы добились исключения пространства имен с помощью комбинации трех фильтров 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

Другие вопросы по теме