Syslog-NG接收同源Palo Alto Prisma VPN日志格式不同致Splunk解析失败
根因定位
该问题和Prisma侧配置无关,是不同版本Syslog-NG对无标准Syslog头部报文的默认处理逻辑差异导致:
- Syslog-NG 3.5版本对未携带RFC3164/RFC5424标准头部的日志报文,默认仅拼接接收时间后直接输出原始报文内容,不会额外插入发送端IP字段
- Syslog-NG 3.17及之后版本调整了非标准报文的默认解析规则,即便配置
keep_hostname(no),也会自动将日志发送方IP作为HOST字段插入到时间戳与原始日志内容之间,你问题中提到的34.0.0.1就是Prisma设备的发送IP,该额外插入的字段直接导致Palo TA解析失败
修复方案
优先选择方案1,改造成本最低且兼容性最好:
方案1:显式指定落盘模板匹配旧版本格式
修改新服务器B的Syslog-NG配置中prisma destination的定义,添加template参数强制删除HOST字段输出,保持和旧服务器格式完全一致:
destination prisma{ file("/directory/log.log") create_dirs(yes) template("$DATE $MSG\n") );
修改完成后执行syslog-ng -s校验配置语法,无报错后重启syslog-ng服务即可。
方案2:强制关闭Syslog-NG的报文头部解析
如果需要完全保留原始报文的接收处理逻辑,可以在source配置中添加flags(no-parse)参数,强制Syslog-NG不解析报文头部:
source vpn_encrypted_log_traffic { network( ip(0.0.0.0) port(6514) transport("tls") flags(no-parse) tls( cert-file("/etc/syslog-ng/certs/prv.cer") key-file("/etc/syslog-ng/certs/prv.key") peer_verify(optional-untrusted) ) ); };
该配置会让Syslog-NG将收到的所有报文内容全部识别为$MSG,再配合自定义模板即可实现任意格式输出。
验证步骤
配置生效后查看新落盘的日志,确认时间戳后不再出现额外IP字段,格式和旧服务器完全一致即可,此时Splunk Palo TA会自动恢复正常解析。
内容的提问来源于stack exchange,提问作者jjfredericks
相关产品推荐
相关产品推荐

