如何通过Fluentd仅将错误及警告日志推送至CloudWatch Log Groups
要解决这个问题,你需要修正日志解析规则并添加过滤逻辑,确保只有ERROR和WARNING级别的日志被推送到CloudWatch。以下是修正后的完整配置:
<source> @type tail path /var/log/*/*.log pos_file /var/log/td-agent/apps.pos tag disagg-logs <parse> @type regexp expression /(?<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) \| (?<pid>\d+) \| (?<function>[^|]+) \| (?<level>[^|]+) \| (?<field1>[^|]+) \| (?<field2>-?\d+) \| (?<field3>-?\d+) \| (?<field4>-?\d+) \| (?<field5>[^|]+) \| (?<message>[^|]+) \|/ </parse> </source> <filter disagg-logs> @type grep <regexp> key level pattern ^(ERROR|WARNING)$ </regexp> </filter> <match disagg-logs> @type cloudwatch_logs log_group_name disagg-logs log_stream_name disagg-logs auto_create_stream true region us-east-1 </match>
核心改动说明
- 修复日志解析逻辑:原正则无法正确提取日志级别,新正则会解析日志中以
|分隔的所有字段,其中专门提取出level字段对应日志的级别标识(INFO/ERROR/WARNING) - 新增日志过滤环节:通过
grep类型的过滤器,只保留level字段值为ERROR或WARNING的日志,直接排除INFO及其他非目标级别的日志 - 输出配置保持不变:CloudWatch的推送配置无需调整,过滤后的符合条件日志会正常推送到指定的Log Group
原配置的问题在于没有区分日志级别,所有读取到的日志都会被推送。通过解析出级别字段并添加过滤规则,就能精准实现只推送ERROR和WARNING日志的需求。
内容的提问来源于stack exchange,提问作者rahuls_
相关产品推荐
相关产品推荐

