Logging 仅为选定的吊舱激活kubernetes日志

Logging 仅为选定的吊舱激活kubernetes日志,logging,kubernetes,fluentd,fluent-bit,Logging,Kubernetes,Fluentd,Fluent Bit,我想用please\u log\u with\u parser:myparser这样的注释对一些kubernetes pods进行注释,并用fluentbit这样的注释将这些pods的日志与给定的解析器一起处理到我们的弹性搜索集群中 对于fluentbit,我只知道注释fluentbit.io/exclude,但这将导致必须注释所有其他POD。-是否可以告诉fluentbit仅处理具有标签的日志,或者在没有适当注释的情况下丢弃所有消息 是否有一种替代fluentbit的方法可以做到这一点?一种方

我想用
please\u log\u with\u parser:myparser
这样的注释对一些kubernetes pods进行注释,并用
fluentbit
这样的注释将这些pods的日志与给定的解析器一起处理到我们的弹性搜索集群中

对于fluentbit,我只知道注释
fluentbit.io/exclude
,但这将导致必须注释所有其他POD。-是否可以告诉fluentbit仅处理具有标签的日志,或者在没有适当注释的情况下丢弃所有消息


是否有一种替代fluentbit的方法可以做到这一点?

一种方法是结合使用
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"
    }
}
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
然后使用
nest
将注释提升到顶层。 然后使用
grep
放弃该记录,如果该注释存在,则仅保留该记录

我的头盔值现在如下所示:

{
    "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"
    }
}
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

这回答了你的问题吗@ArghyaSadhu不是。这是关于排除某个名称空间中的所有内容。我的只包括带注释的豆荚。