我目前有以下配置:
<match docker.nginx>
@type rewrite_tag_filter
rewriterule1 source stdout docker.nginx.stdout
rewriterule2 source stderr docker.nginx.stderr
</match>
Run Code Online (Sandbox Code Playgroud)
但这意味着,每个容器我必须做同样的事情.
这不起作用,但可能你会得到我想要的东西:
<match docker.*>
@type rewrite_tag_filter
rewriterule1 source stdout docker.*.stdout
rewriterule2 source stdout docker.*.stderr
</match>
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我可以以某种方式引用匹配块中匹配的标签吗?因此,如果它是nginx/rabbitmq/zookeeper/anything,它会将所有事件流拆分为docker.<fluentd-tag>.stdout和stderr.
提前致谢!
查看Fluentd record_transformer 参数,您可以尝试使用占位符来引用标记中捕获的模式,并根据这些捕获的值应用动态转换。
根据您的要求,您可以使用通配符 ( ) 来捕获标记,然后在插件中*使用占位符 ( ) 引用捕获的值。${tag_parts[N]}rewrite_tag_filter
<match docker.*>
@type rewrite_tag_filter
rewriterule1 source stdout docker.${tag_parts[1]}.stdout
rewriterule2 source stderr docker.${tag_parts[1]}.stderr
</match>
Run Code Online (Sandbox Code Playgroud)
在这种情况下,${tag_parts[1]}将指代标签后面的部分docker.(例如nginx,rabbitmq、zookeeper、 等)。
任何与该模式匹配的标签docker.*都将根据源( 或 )将其事件重写stdout为、等stderr标签。docker.nginx.stdoutdocker.rabbitmq.stderr
| 归档时间: |
|
| 查看次数: |
691 次 |
| 最近记录: |