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

syslog-ng转发Squid访问日志至NetXMS时去除多余前缀的配置咨询

syslog-ng转发Squid访问日志至NetXMS时去除多余前缀的配置咨询

我之前也碰到过一模一样的问题——syslog-ng默认的syslog目标会自动给每条日志套上标准的syslog头部(就是你看到的包含时间戳、主机名的那串前缀),这就导致NetXMS收到的不是你想要的原始Squid日志行。要解决这个问题,我们只需要调整syslog-ng的配置,让它把日志内容原样转发即可。

先明确你的核心需求:把Squid access.log里的每一行原封不动发送到NetXMS,不要额外的syslog前缀信息。

解决方案一:改用network目标替代syslog目标

syslog目标的特性就是自动添加标准syslog头部,而network目标可以直接发送原始文本。你可以把destination部分改成下面这样:

destination d_squid {
    network("10.0.0.254" transport("udp") port(514) template("${MESSAGE}\n"));
};

这里的关键是template("${MESSAGE}\n")——它指定了只发送日志的原始内容(${MESSAGE}就是syslog-ng从文件里读到的每一行内容),加上\n是为了保持日志行的换行格式。

解决方案二:给syslog目标自定义模板(如果一定要用syslog目标)

如果你因为某些原因必须使用syslog目标,也可以通过自定义模板来去掉多余前缀,只保留原始日志内容:

destination d_squid {
    syslog("10.0.0.254" transport("udp") port(514) template("${MESSAGE}\n"));
};

这个原理和上面一样,强制syslog目标只输出原始消息内容,而不是默认的带头部格式。

额外注意事项

  • 确保你的source配置没问题:file("/var/log/squid/access.log")已经正确读取到完整的日志行,没有被拆分
  • 你的filter配置(f_squid_denied)可以保留原样,不影响日志内容的转发

修改完配置后,记得重启syslog-ng服务让配置生效:

systemctl restart syslog-ng

这样NetXMS收到的就会是你想要的原始Squid日志行啦:

1713345191.357 69 10.30.108.14 TCP_TUNNEL/200 3530 CONNECT api.github.com:443 - HIER_DIRECT/140.82.121.5 -

备注:内容来源于stack exchange,提问作者Noel Nemeth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 10:04:52