Ubuntu Syslog与远程日志服务器的集成方法
一、方案总览与选择
- 常用方案包括:使用系统自带的 rsyslog 或 syslog-ng 进行原生转发;在复杂场景引入 Fluentd/Logstash 做日志采集与转发。
- 协议与端口:Syslog 默认使用 UDP/TCP 514;生产环境建议优先 TCP 或 TLS 以提升可靠性与安全性。
- 典型架构:客户端将日志发往集中式日志服务器(可落地到文件或进一步送入 Elasticsearch/Kafka 等)。
二、使用 rsyslog 快速集成
- 客户端配置
- 安装并启用服务
sudo apt-get update
sudo apt-get install rsyslog
sudo systemctl enable --now rsyslog
- 编辑配置(推荐在 /etc/rsyslog.d/50-remote.conf 添加)
使用 UDP 发送至远程服务器 10.0.0.10 的 514 端口
. @10.0.0.10:514
如需 TCP
. @@10.0.0.10:514
- 重启服务
sudo systemctl restart rsyslog
- 服务器端配置(接收端)
- 启用网络输入模块(取消注释或新增)
UDP
module(load=“imudp”)
input(type=“imudp” port=“514”)
TCP
module(load=“imtcp”)
input(type=“imtcp” port=“514”)
- 可选:按来源隔离日志
将来自 192.168.1.0/24 的日志单独落盘
if $fromhost-ip startswith ‘192.168.1.’ then /var/log/remote/192.168.1.x.log
& stop
- 重启服务
sudo systemctl restart rsyslog
- 防火墙放行
sudo ufw allow 514/udp
sudo ufw allow 514/tcp
- 说明
- 转发语法:@ 表示 UDP,@@ 表示 TCP。
- 如需按设施/级别精细化转发,可使用选择符(如:authpriv.、cron.、local0. → @@10.0.0.10:514*)。
三、使用 syslog-ng 集成
- 客户端配置
- 安装
sudo apt-get update
sudo apt-get install syslog-ng
- 编辑 /etc/syslog-ng/syslog-ng.conf
source s_local { system(); internal(); };
destination d_remote_tcp { tcp(“10.0.0.10” port(514)); };
或使用 UDP
destination d_remote_udp { udp(“10.0.0.10” port(514)); };
log { source(s_local); destination(d_remote_tcp); };
- 重启
sudo systemctl restart syslog-ng
- 服务器端配置(接收端)
- 编辑 /etc/syslog-ng/syslog-ng.conf
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
- 防火墙放行 514/udp 与 514/tcp
四、进阶方案与生态集成
- 使用 Fluentd 作为转发器
- 安装(以 td-agent 为例)
curl -fsSL https://toolbelt.treasuredata.com/sh/install-debian-buster-td-agent4.sh | sh
- 配置 /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 接收与转发
- 安装(示例为 7.x 仓库)
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo “deb https://artifacts.elastic.co/packages/7.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install logstash
- 配置 /etc/logstash/conf.d/syslog.conf
input { syslog { port => 514 type => “syslog” } }
output {
elasticsearch { hosts => [“http://localhost:9200”] index => “syslog-%{+YYYY.MM.dd}” }
或转发到上游日志服务器
tcp { host => “10.0.0.10” port => 5000 }
}
- 启动
sudo systemctl start logstash
- 适用场景
- 需要结构化解析、过滤、丰富、缓冲或对接 Elasticsearch/Kafka 等时,可在客户端或服务器端引入 Fluentd/Logstash。
五、验证、排错与安全加固
-
连通性与日志验证
- 发送测试日志
logger -p local3.info “test remote syslog”
- 在服务器查看
sudo tail -f /var/log/remote.log
或按来源查看
sudo tail -f /var/log/remote/192.168.1.x.log
-
常见问题
- 端口未放行:确认 UFW/iptables 已放行 514/udp 与 514/tcp。
- 协议不匹配:客户端用 @@(TCP)而服务器仅开了 UDP,或反之。
- SELinux/AppArmor:必要时调整策略以允许 rsyslog/syslog-ng 绑定 514 端口。
- 旧版兼容:部分老系统使用 /etc/default/syslogd 的 SYSLOGD=“-r” 开启远程 UDP 监听(现代 Ubuntu 多使用 rsyslog 模块方式)。
-
安全加固建议
- 优先使用 TCP 或 TLS 传输;rsyslog 可结合 TLS 模块加密通道。
- 在服务器侧限制来源网段(如仅允许办公网段或跳板机网段)。
- 为日志目录设置最小权限与日志轮转(如 logrotate),避免磁盘被占满。