• Kubernetes
  • fluent-bit采集K8S日志,如何根据不同的namespace_name输出到不同的topic中?

请问fluent-bit采集K8S日志,如何根据不同的namespace_name输出到不同的topic中?一个namespace_name对应一个topic。
目前了解到的一种方法是通过tail,指定采集的路径再打tag去匹配输出到对应的topic。但这种方式一旦namespace很多,就需要写很多的input tag去处理,不是很灵活。
是否有正则表达式可以处理?
谢谢。

    wanjunlei 谢谢分享。
    我参照文章说的,添加nest去把嵌套的内容提取出来,复制成另外一个字段后,再还原回原来的样子。但好像不起作用,只在第一个filter把嵌套的内容提取输出来了,后面两个filter作用不了。
    [FILTER]
    Name nest
    Match kube.*
    Operation lift
    Nested_under kubernetes
    Add_prefix kubernetes_
    [FILTER]
    Name Modify
    Match kube.*
    Copy kubernetes_namespace_name namespace
    [FILTER]
    Name nest
    Match kube.*
    Operation nest
    Nest_under kubernetes
    Wildcard kubernetes_*
    Remove_prefix kubernetes_

    输出:
    Topics test.fluentbit.k8s
    Topic_key namespace
    Dynamic_topic on

    你说的不起作用是什么意思?
    还有就是topics不能用“.”分隔

      wanjunlei 就是第一个filter生效了,第二个filter没能复制namespace。不知道这些filter是不是按顺序去执行的。
      topic_key我是填写复制后的namespace。
      输出的内容是这样的:
      {
      "@timestamp": 1620368736.193243,
      "stream": "stdout",
      "time": "2021-05-07T06:25:36.193243335Z",
      "kubernetes_pod_name": "XXX-7b8c6f48b4-pcq9g",
      "kubernetes_namespace_name": "XXX",
      "kubernetes_pod_id": "2573451b-5bd6-4693-9a90-0ac6ae589d0b",
      "kubernetes_labels": {
      "chart": "XXX",
      "cluster": "XXX",_

      wanjunlei 知道原因了,我把第二个过滤器modify写成Modify了,无语。谢谢老哥