Linux用rsyslog接收交换机日志,关键在于服务端启用UDP 514监听、按源IP分类存储(如/var/log/switches/%FROMHOST-IP%/%$YEAR%%$MONTH%%$DAY%.log),并配置防火墙放行UDP 514端口,确保轻量稳定可追溯。

Linux 用 rsyslog 接收交换机日志,关键在于让 rsyslog 作为服务端监听标准 syslog 端口(UDP/TCP 514),并按来源 IP 或设备类型分类落盘。交换机一般只支持 UDP 发送,且不带认证,所以配置要轻量、稳定、可追溯。
确保 rsyslog 启用 UDP 监听并接收日志
交换机默认走 UDP 协议发 syslog,不支持 TLS 或身份校验,因此服务端只需启用 UDP 模块并监听 514 端口:
- 编辑
/etc/rsyslog.conf,取消以下两行注释(或直接添加):module(load="imudp")input(type="imudp" port="514") - 保存后重启服务:
sudo systemctl restart rsyslog - 验证监听状态:
sudo ss -tuln | grep :514,应看到udp行绑定在*:514
按交换机 IP 分类存储日志文件
避免所有设备日志混在一起,用模板自动创建以 IP 命名的目录和文件:
- 在配置文件中添加模板定义(放在模块加载之后、规则之前):
$template SwitchLogs,"/var/log/switches/%FROMHOST-IP%/%$YEAR%%$MONTH%%$DAY%.log" - 应用该模板接收所有来自交换机的日志:
*.* ?SwitchLogs - 创建父目录并授权:
sudo mkdir -p /var/log/switchessudo chown syslog:adm /var/log/switchessudo chmod 755 /var/log/switches
可选:过滤并单独标记交换机日志
如果交换机日志有固定特征(如消息开头含 SWITCH 或程序名是 snmpd),可加条件规则增强可读性:
- 在
/etc/rsyslog.d/90-switch.conf中写:if $fromhost-ip startswith '192.168.10.' then /var/log/switches/core-switch.log & ~if $msg contains 'LINK UP' or $msg contains 'LINK DOWN' then /var/log/switches/events.log & ~
验证是否收到日志
- 从交换机侧配置 syslog server 地址为 Linux 服务器 IP;
- 在 Linux 上执行
sudo tail -f /var/log/switches/192.168.10.100/20260729.log(对应交换机 IP); - 触发交换机事件(如插拔网线),观察日志是否实时出现。
注意防火墙需放行 UDP 514 端口:sudo ufw allow 514/udp 或对应 iptables 规则。


















