Активировать журналы Kubernetes только для выбранных подов

Я хотел бы аннотировать некоторые модули kubernetes с помощью аннотации типа please_log_with_parser: myparser и иметь что-то вроде fluentbit, чтобы только обрабатывать журналы этих модулей с помощью данного синтаксического анализатора в нашем эластичном поисковом кластере.

Что касается fluentbit, я знаю только аннотацию fluentbit.io/exclude, но это привело бы к необходимости аннотировать все остальные модули. - Можно ли указать fluentbit для только журналов процессов, имеющих метку, или иным образом отбрасывать все сообщения без соответствующей аннотации?

Может быть, есть альтернатива fluentbit, которая может это сделать?


person michas    schedule 16.01.2020    source источник
comment
Отвечает ли это на ваш вопрос? Как исключить пространство имен из ведения журнала Fluent-Bit   -  person Arghya Sadhu    schedule 16.01.2020
comment
@ArghyaSadhu Нет. Это о исключении всего в некотором пространстве имен. У меня примерно включая только аннотированные модули.   -  person michas    schedule 16.01.2020


Ответы (1)


Один из вариантов - использовать комбинацию фильтров kubernetes, nest и grep, как в этот пример.

Вы используете фильтр kubernetes для создания таких метаданных:

{
    "kubernetes": {
        "pod_name": "myapp-0",
        "namespace_name": "default",
        "pod_id": "216cd7ae-1c7e-11e8-bb40-000c298df552",
        "annotations": {
            "please_log_with_parser": "myparser"
        },
        "host": "minikube",
        "container_name": "myapp",
        "docker_id": "370face382c7603fdd309d8c6aaaf434fd98b92421ce7c7c8aafe7697d4aa362"
    }
}

Затем используйте nest, чтобы поднять аннотацию на верхний уровень. Затем используйте grep, чтобы отменить сохранение записи, только если эта аннотация присутствует.

Мои значения для руля теперь выглядят так:

rawConfig: |-
 @INCLUDE fluent-bit-service.conf
 @INCLUDE fluent-bit-input.conf
 @INCLUDE fluent-bit-filter.conf
 [FILTER]
     Name         nest
     Match        *
     Operation    lift
     Nested_under kubernetes
     Add_prefix   kubernetes_
 [FILTER]
     Name         nest
     Match        *
     Operation    lift
     Nested_under kubernetes_annotations
     Add_prefix   kubernetes_annotations_
 [FILTER]
     Name    grep
     Match   *
     Regex   kubernetes_annotations_fluentbit.io/parser .*
 [FILTER]
     Name         nest
     Match        *
     Operation    nest
     Wildcard     kubernetes_annotations_*
     Nest_under   kubernetes_annotations
     Remove_prefix   kubernetes_annotations_
 [FILTER]
     Name         nest
     Match        *
     Operation    nest
     Wildcard     kubernetes_*
     Nest_under   kubernetes
     Remove_prefix  kubernetes_
 @INCLUDE fluent-bit-output.conf
person michas    schedule 16.01.2020