- 已编辑
请问fluent-bit采集K8S日志,如何根据不同的namespace_name输出到不同的topic中?一个namespace_name对应一个topic。
目前了解到的一种方法是通过tail,指定采集的路径再打tag去匹配输出到对应的topic。但这种方式一旦namespace很多,就需要写很多的input tag去处理,不是很灵活。
是否有正则表达式可以处理?
谢谢。
请问fluent-bit采集K8S日志,如何根据不同的namespace_name输出到不同的topic中?一个namespace_name对应一个topic。
目前了解到的一种方法是通过tail,指定采集的路径再打tag去匹配输出到对应的topic。但这种方式一旦namespace很多,就需要写很多的input tag去处理,不是很灵活。
是否有正则表达式可以处理?
谢谢。
kartikzheng 我翻阅了官方文档,kafka是支持动态topic的设置的,但嵌套的json,Topic_Key该如何设置?官方文档没有说明。
es索引的写法是”logstash_prefix_key $kubernetes[‘labels’][‘app’]”,但kafka我尝试不行。
请问kafka支持多维数组提取topic吗?
https://docs.fluentbit.io/manual/pipeline/outputs/kafka
fluent/fluent-bit#1775
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了,无语。谢谢老哥