Ubuntu syslog日志传输方式
小樊
45
2025-11-21 08:01:58
Ubuntu syslog 日志传输方式概览
- rsyslog 原生转发:使用 UDP/TCP 514 将日志发送到集中服务器,配置简洁、系统自带,适合大多数场景。
- syslog-ng 转发:功能更灵活,支持细粒度路由与多目的地,适合复杂日志管道。
- 通过日志代理转发:以 Fluentd/Logstash 作为采集与转发中枢,便于与 Elasticsearch/Kafka 等生态集成。
- 传输协议选择:UDP 开销小但不可靠;TCP 可靠、可重传;生产环境常优先 TCP 或配合队列/缓冲提升稳健性。
rsyslog 发送与接收
- 发送端(客户端)
- 安装并启用服务:sudo apt-get update && sudo apt-get install rsyslog && sudo systemctl enable --now rsyslog
- 配置转发规则(示例为发送到远程 10.0.0.10:514):
- UDP:. @10.0.0.10:514
- TCP:. @@10.0.0.10:514
写入到 /etc/rsyslog.d/50-remote.conf 或直接在 /etc/rsyslog.conf 末尾追加。
- 使配置生效:sudo systemctl restart rsyslog
- 接收端(服务器)
- 启用网络输入模块与端口:
- UDP:
module(load=“imudp”)
input(type=“imudp” port=“514”)
- TCP:
module(load=“imtcp”)
input(type=“imtcp” port=“514”)
- 可选:将网络日志单独落盘,例如 file(“/var/log/remote.log”);保存后重启 rsyslog。
- 防火墙放行:sudo ufw allow 514/udp 或 sudo ufw allow 514/tcp。
syslog-ng 发送与接收
- 发送端(客户端)
- 安装:sudo apt-get update && sudo apt-get install syslog-ng
- 配置示例(/etc/syslog-ng/syslog-ng.conf):
destination d_remote { udp(“10.0.0.10” port(514)); };
log { source(s_sys); destination(d_remote); };
如需 TCP,将 udp 改为 tcp。
- 生效:sudo systemctl restart syslog-ng
- 接收端(服务器)
- 配置示例:
source s_network { udp(ip(0.0.0.0) port(514)); tcp(ip(0.0.0.0) port(514)); };
destination d_local { file(“/var/log/remote.log”); };
log { source(s_network); destination(d_local); };
- 生效:sudo systemctl restart syslog-ng。
通过 Fluentd 或 Logstash 转发
- Fluentd(td-agent)
- 安装:sudo apt-get update && sudo apt-get install td-agent
- 配置示例(/etc/td-agent/td-agent.conf):
@type syslog port 514 tag system.log
@type none
@type forward
host **10.0.0.10** port **24224**
- 生效:sudo systemctl restart td-agent
- Logstash
- 安装 Logstash(略)
- 配置示例(/etc/logstash/conf.d/syslog.conf):
input { syslog { port => 514 type => “syslog” } }
output { tcp { host => “10.0.0.10” port => 5000 } }
- 生效:sudo systemctl restart logstash
实践建议与排错要点
- 协议与可靠性:优先 TCP/514;如需更高可靠可结合本地缓冲/队列(如 rsyslog 队列)避免丢日志。
- 防火墙与监听地址:发送端与接收端均需放行 514/udp 与/或 514/tcp;云环境注意安全组/NACL 策略。
- 权限与端口:非 root 进程绑定 1–1023 端口需具备相应能力(CAP_NET_BIND_SERVICE),或改用高端口测试。
- 格式与解析:保持发送端与接收端 facility/severity 与解析规则一致,避免入库后字段错乱。
- 快速验证:
- 发送端执行:logger -p user.info “test remote log”
- 接收端查看:tail -f /var/log/syslog 或 /var/log/remote.log 是否出现该条日志。