You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fluent-Bit:如何提取文件名部分内容并追加到CloudWatch日志流名称中

Fluent-Bit:如何提取文件名部分内容并追加到CloudWatch日志流名称中

看起来你已经把Fluent-Bit的基础配置搭得差不多了,就差最后一步把文件名里的client.test提取到CloudWatch的日志流名称里对吧?我来帮你把现有配置理清楚,确保它能正常工作~

你的核心思路完全没问题:用rewrite_tag过滤器从文件路径里提取目标片段,再通过TAG的分段值来给日志流名称赋值。我把完整可运行的配置整理出来,关键部分都加了注释:

[INPUT]
    Name tail
    Path /var/log/nginx/*access.log
    Tag nginx.access
    Path_Key filepath  # 这步是前提,让后续过滤器能拿到日志文件的完整路径

[FILTER]
    Name rewrite_tag
    Match nginx.access
    # 正则匹配文件路径,精准捕获`-access.log`前面的名称片段
    Rule $filepath ^/var/log/nginx/(.*)-access.log$ nginx.access.$1 true
    Emitter_Name re_emitted  # 给重发的事件指定唯一标识,避免重复处理冲突

[OUTPUT]
    Name                cloudwatch_logs
    Match               nginx.access.*  # 匹配所有重写后的TAG
    region              eu-west-2
    log_group_name      /aws/ec2/access-logs
    log_stream_name     fluent-bit-${TAG[2]}  # TAG被按`.`分割为数组,取第三段(索引从0开始)就是我们要的client.test
    auto_create_group   true  # 自动创建不存在的日志组或日志流
    log_key             log  # 指定要发送的日志内容字段,根据实际情况调整

关键细节说明:

  • 正则规则^/var/log/nginx/(.*)-access.log$会精准匹配你的日志路径,把client.test这类名称片段捕获到$1变量里,最终生成新的TAGnginx.access.client.test。
  • log_stream_name中的${TAG[2]}:Fluent-Bit会把TAG按.分割成数组,nginx.access.client.test的数组元素依次是[0]nginx、[1]access、[2]client.test,刚好取到我们需要的文件名部分。
  • 务必保证INPUT段的Path_Key filepath配置正确,否则rewrite_tag过滤器拿不到$filepath变量,整个提取规则就会失效。

如果之后你的日志文件名格式有调整,只需要修改rewrite_tag里的正则捕获组就能适配,现在这个配置应该就能让CloudWatch的日志流显示成fluent-bit-client.test啦~

备注:内容来源于stack exchange,提问作者user2500414

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 10:24:34