Linux系统中日志转发通常通过syslog服务实现,主流的syslog实现有rsyslog和syslog-ng,两者都支持将本地日志转发到远程日志服务器,满足集中化日志管理需求。
syslog基础概念
syslog是Linux系统标准的日志服务协议,定义了日志的传输规则和格式,核心包含设施(facility)和优先级(priority)两个维度。设施表示日志来源,比如auth代表认证相关日志,cron代表定时任务日志;优先级表示日志重要程度,从debug、info到emerg逐级升高。
配置日志转发时,需要明确指定哪些设施、哪些优先级的日志需要转发到目标服务器,同时指定远程服务器的地址和接收端口,默认syslog使用UDP 514端口,也可以配置为TCP协议提升传输可靠性。
rsyslog配置日志转发
rsyslog是目前大多数Linux发行版默认搭载的syslog实现,配置步骤如下:
1. 安装与启动rsyslog
首先检查rsyslog是否已安装,执行以下命令:
# 检查rsyslog状态 systemctl status rsyslog # 若未安装,CentOS/RHEL系统执行 yum install rsyslog -y # Ubuntu/Debian系统执行 apt install rsyslog -y # 启动并设置开机自启 systemctl start rsyslog systemctl enable rsyslog
2. 配置转发规则
rsyslog的主配置文件为/etc/rsyslog.conf,自定义配置建议放在/etc/rsyslog.d/目录下,避免修改主配置影响原有规则。创建转发配置文件:
# 创建自定义转发配置 vim /etc/rsyslog.d/forward.conf
在文件中添加以下内容,实现将所有info级别及以上的日志转发到远程服务器192.168.0.100的514端口:
# 使用UDP协议转发,@@代表TCP协议,@代表UDP协议 *.* @192.168.0.100:514 # 若需要指定特定设施和优先级,比如只转发auth和cron的info及以上日志 # auth, cron.info @192.168.0.100:514 # 若使用TCP协议,配置如下 # *.* @@192.168.0.100:514
注意配置中的特殊字符转义,若涉及HTML相关字符需要按规则处理,这里配置内容无特殊字符无需额外操作。
3. 重启服务与验证
配置完成后重启rsyslog服务使配置生效:
systemctl restart rsyslog
在本地生成测试日志,验证是否转发成功:
# 生成一条本地测试日志 logger -p info "this is a test forward log"
登录远程日志服务器192.168.0.100,查看对应日志文件,若能看到上述测试日志则转发配置成功。
syslog-ng配置日志转发
syslog-ng是另一款常用的syslog实现,功能更丰富,配置步骤如下:
1. 安装syslog-ng
# CentOS/RHEL系统安装 yum install syslog-ng -y # Ubuntu/Debian系统安装 apt install syslog-ng -y # 启动并设置开机自启 systemctl start syslog-ng systemctl enable syslog-ng
2. 配置转发规则
syslog-ng的主配置文件为/etc/syslog-ng/syslog-ng.conf,在配置文件中添加以下内容:
# 定义日志来源,all代表所有日志
source s_all {
system();
internal();
};
# 定义转发目标,使用UDP协议,目标地址192.168.0.100,端口514
destination d_remote {
udp("192.168.0.100" port(514));
};
# 定义日志转发规则,将所有日志发送到远程目标
log {
source(s_all);
destination(d_remote);
};
若需要使用TCP协议,将destination中的udp改为tcp即可。
3. 重启服务验证
systemctl restart syslog-ng # 生成测试日志 logger -p info "test syslog-ng forward log"
同样到远程日志服务器查看是否接收到测试日志。
常见问题与解决
- 转发失败首先检查防火墙是否放开514端口,UDP和TCP协议都需要对应放行
- 远程日志服务器需要开启对应端口的监听,确保rsyslog或syslog-ng服务正常运行
- 若转发日志出现乱码,检查两端系统的字符集是否一致,建议统一使用UTF-8字符集
- 大量日志转发时建议采用TCP协议,避免UDP丢包导致日志缺失
syslog日志转发rsyslogLinux配置syslog_conf修改时间:2026-06-17 17:45:44