如何使用Fluentd解析syslog仅提取JSON内容适配GCP结构化日志要求
处理方案
你可以通过google-fluentd自带的过滤器插件完成日志解析,直接提取syslog前缀后的业务JSON结构,具体配置步骤如下:
- 首先在fluentd配置文件中新增第一个parser过滤器,通过正则拆分syslog前缀和业务JSON内容
<filter 你的日志输入tag> @type parser # 你的日志原始内容存在的字段名,默认syslog输入为message key_name message # 不需要保留前缀相关字段时设为false reserve_data false <parse> @type regexp # 匹配标准syslog前缀,将后续JSON内容捕获到raw_json字段 expression /^[A-Z][a-z]{2}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2}\s+\S+\s+\S+\[\d+\]:\s*(?<raw_json>{.*})$/ </parse> </filter>
- 新增第二个parser过滤器,将捕获的raw_json字段解析为结构化JSON,作为最终输出
<filter 你的日志输入tag> @type parser key_name raw_json reserve_data false # 处理异常字符避免解析失败 replace_invalid_sequence true <parse> @type json </parse> </filter>
- 配置修改完成后执行
fluentd -c 你的配置文件路径 --dry-run验证配置语法,无误后重启google-fluentd服务即可生效。
如果需要保留syslog前缀中的主机名、进程号等信息,可调整正则表达式捕获对应字段,同时将reserve_data参数改为true即可。
内容的提问来源于stack exchange,提问作者BIlly
相关产品推荐
相关产品推荐

