要让一台linux主机作为syslog服务器接收其他主机日志,核心是启用rsyslog网络监听、定义接收规则并组织存储:需加载imudp和imtcp模块监听udp/tcp 514端口,配置$\template remotelogs按客户端ip分离日志路径,手动创建目录并赋权syslog:adm,最后验证端口监听、服务状态及日志落盘。

要让一台 Linux 主机作为 Syslog 服务器接收其他主机发来的日志,核心是启用 rsyslog 的网络监听能力,并正确路由和落盘日志。整个过程分三块:加载模块、定义接收规则、组织日志存储。不复杂但容易忽略细节。
启用 UDP 和 TCP 监听模块
rsyslog 默认不监听网络端口,需手动加载输入模块。编辑 `/etc/rsyslog.conf` 或新建 `/etc/rsyslog.d/10-remote.conf`,确保包含以下两段:module(load="imudp") input(type="imudp" port="514") module(load="imtcp") input(type="imtcp" port="514")
UDP 轻量适合测试或低可靠性场景;TCP 更稳定,支持断连重试和 TLS 加密(如后续需安全传输,可在此基础上加 $DefaultNetstreamDriver gtls 等配置)。
定义日志分类与存储路径
单纯接收日志还不够,得按来源区分,否则所有主机日志混在一起无法溯源。添加模板和规则:$template RemoteLogs,"/var/log/remote/%FROMHOST-IP%/%PROGRAMNAME%.log" *.* ?RemoteLogs
这个模板会把每台客户端(比如 192.168.1.23)的日志存到独立子目录下,例如:
/var/log/remote/192.168.1.23/sshd.log/var/log/remote/192.168.1.23/cron.log
注意:%FROMHOST-IP% 是客户端真实 IP,不是 DNS 名;若客户端使用 NAT 或代理,可能需要配合 keep-hostname(yes) 或 preserve-fqdn(on) 参数调整。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
创建目录并赋权
rsyslog 不会自动创建嵌套目录,也默认以 `syslog` 用户运行,所以必须提前建好路径并设对权限:sudo mkdir -p /var/log/remote/192.168.1.23 sudo chown -R syslog:adm /var/log/remote sudo chmod 755 /var/log/remote
建议用 chmod 750 更严格,再确保 syslog 组有读写权限。如果日志量大,还可考虑配 logrotate 对 /var/log/remote/*/ 下文件做轮转。
验证服务状态与防火墙
重启服务后检查是否监听成功:sudo systemctl restart rsyslog sudo ss -tuln | grep ':514' # 应看到 udp :514 和 tcp :514 均在 LISTEN 状态 sudo systemctl status rsyslog # 确认无报错
别忘了开放防火墙端口(以 ufw 为例):
sudo ufw allow 514/udp sudo ufw allow 514/tcp
最后,在任意客户端执行 logger "test from client",然后在服务端查看对应 IP 目录下是否有新日志生成,即可确认链路通了。










