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

syslog-ng接收JSON日志丢失input_name字段问题求助

问题原因与解决方案

这个问题的核心是syslog-ng默认的UDP源会自动尝试解析消息为标准syslog格式,而你发送的是纯JSON数据,没有符合syslog的头部结构,导致解析出错,丢失了部分内容。

具体原因

syslog-ng的UDP源默认启用了syslog格式解析(对应RFC 3164或RFC 5424规范),当它收到像{"input_name":"sensor_alert","machine":"10.200.249.27"}这样的纯JSON时,会错误地把input_name识别为syslog的「程序名称(TAG)」字段,然后将剩下的"sensor_alert","machine":"10.200.249.27"}作为消息体(也就是$MSG变量的内容),最终写入文件时就丢失了{"input_name":这部分。

解决方案

修改你的UDP源配置,添加flags(no-parse)选项,让syslog-ng跳过syslog格式解析,直接保留原始接收的完整数据:

source test_src { udp( ip(0.0.0.0) port(5115) flags(no-parse) ); };
destination test_dest { file("/data/test_${YEAR}${MONTH}${DAY}.log" template("$MSG\n") template-escape(no)); };
log { source(test_src); destination(test_dest); };

说明

flags(no-parse)会告诉syslog-ng不要尝试提取syslog的元数据(比如优先级、标签、时间戳等),完全按照原始字节流处理接收到的内容,这样就能完整保存你的JSON日志结构了。

内容的提问来源于stack exchange,提问作者Perling

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:49:07