如何配置Fluentbit向Sumologic发送原始日志而非JSON格式
配置Fluentbit仅发送.NET应用的原始日志内容到Sumologic
要实现只发送log字段中的原始日志文本到Sumologic,需调整Fluentbit的过滤器与输出配置,核心是提取目标字段并以纯文本格式输出。
步骤1:确保JSON日志被正确解析
先配置解析器,将ECS Fargate输出的JSON日志解析为结构化数据:
[PARSER] Name docker_json Format json Time_Key date Time_Format %s.%L # 匹配timestamp格式:1675120653.269619 Time_Keep On
在INPUT段引用该解析器:
[INPUT] Name docker Tag dotnet.app Docker_URL unix:///var/run/docker.sock Parser docker_json
步骤2:添加过滤器提取原始日志内容
使用record_transformer过滤器,提取log字段的值作为日志主体,并移除冗余字段:
[FILTER] Name record_transformer Match dotnet.app # 将log字段内容赋值给message字段 Record message ${log} # 删除不需要的原始字段 Remove_key date,container_id,container_name,source,log
注意:此过滤器需放在多行处理过滤器之后,确保先完成多行日志合并,再提取原始内容。
步骤3:配置Sumologic输出为纯文本格式
在输出段设置Format raw,让Fluentbit以纯文本而非JSON格式发送日志:
[OUTPUT] Name sumologic Match dotnet.app Host collectors.sumologic.com Port 443 TLS On TLS_Verify On Format raw URL <你的Sumologic收集器端点>
完整配置示例
[SERVICE] Flush 1 Log_Level info [INPUT] Name docker Tag dotnet.app Docker_URL unix:///var/run/docker.sock Parser docker_json # 保留已有的多行处理配置 [FILTER] Name multiline Match dotnet.app Parser_Firstline dotnet_firstline Parser_Contain dotnet_contain # 新增的原始日志提取过滤器 [FILTER] Name record_transformer Match dotnet.app Record message ${log} Remove_key date,container_id,container_name,source,log [PARSER] Name docker_json Format json Time_Key date Time_Format %s.%L Time_Keep On # 你的多行解析器配置 [PARSER] Name dotnet_firstline Format regex Regex /^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}Z/ [PARSER] Name dotnet_contain Format regex Regex /.*/ [OUTPUT] Name sumologic Match dotnet.app Host collectors.sumologic.com Port 443 TLS On TLS_Verify On Format raw URL <你的Sumologic收集器端点>
内容的提问来源于stack exchange,提问作者Shalmal
相关产品推荐
相关产品推荐

