如何去除Fluentd采集Kubernetes日志发送到CloudWatch时的多余乱码字符
Fluentd移除日志ANSI转义颜色码解决方案
方案1:内置record_transformer过滤器(无额外依赖)
无需安装第三方插件,直接修改Fluentd配置添加如下filter段即可:
<filter kubernetes.**> @type record_transformer enable_ruby true <record> log ${record['log'].gsub(/\u001B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]/, '')} </record> </filter>
核心逻辑是通过Ruby的全局替换方法,匹配并移除所有ANSI控制序列,该正则可覆盖你样本中出现的所有颜色类转义码。
注意事项:
- 必须开启
enable_ruby: true配置,否则内嵌的Ruby表达式无法执行 - 将
kubernetes.**替换为你实际的日志流tag,保证过滤规则命中需要处理的日志
方案2:专用ANSI过滤插件(配置更简单)
如果不想手动维护正则,可使用专用过滤插件简化操作:
- 安装插件:
gem install fluent-plugin-ansi-filter - 添加filter配置:
<filter kubernetes.**> @type ansi_filter key_name log </filter>
插件会自动识别并移除所有标准ANSI转义序列,无需手动调整正则规则。
生效验证
修改配置后重启Fluentd服务,新采集的日志就会自动移除多余的转义字符,输出你预期的纯文本日志内容。
内容的提问来源于stack exchange,提问作者balu
相关产品推荐
相关产品推荐

