Активировать логи kubernetes только для выбранных модулей - PullRequest
0 голосов
/ 16 января 2020

Я хотел бы аннотировать некоторые стручки kubernetes с аннотацией вроде please_log_with_parser: myparser и иметь что-то вроде fluentbit to only обрабатывать журналы этих стручков с данным парсером в нашем поиске elasti c cluster.

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

Возможно, существует альтернатива fluentbit, которая способна сделать так?

1 Ответ

0 голосов
/ 16 января 2020

В одном варианте используется комбинация фильтров 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
...