温馨提示×

centos syslog怎样转发

小樊
34
2026-09-30 02:37:12
栏目: 智能运维

在 CentOS 中,syslog 转发通常指把本机日志发送到远程日志服务器(如集中式日志系统)。CentOS 不同版本使用的 syslog 服务不同:

  • CentOS 6 及以前:rsyslog(默认)
  • CentOS 7 / 8 / Stream:rsyslog(默认,systemd 环境)

下面是最常见、实用的 rsyslog 转发配置方法。


一、使用 rsyslog 转发(推荐)

1️⃣ 确认 rsyslog 已安装并运行

rpm -qa | grep rsyslog
systemctl status rsyslog

如未运行:

systemctl start rsyslog
systemctl enable rsyslog

2️⃣ 配置转发规则

编辑配置文件(推荐新建文件,避免改坏主配置):

vim /etc/rsyslog.d/forward.conf

✅ 示例 1:转发所有日志到远程服务器(UDP)

*.* @192.168.1.100:514
  • 一个 @:UDP
  • 192.168.1.100:日志服务器 IP
  • 514:端口

✅ 示例 2:使用 TCP(更安全可靠)

*.* @@192.168.1.100:514
  • 两个 @@:TCP

✅ 示例 3:只转发特定日志

auth.* @@192.168.1.100:514
*.err @192.168.1.100:514

✅ 示例 4:带队列(防止网络中断丢日志,推荐生产用)

*.* @@192.168.1.100:514
$ActionQueueType LinkedList
$ActionQueueFileName fwdRule1
$ActionResumeRetryCount -1
$ActionQueueSaveOnShutdown on

3️⃣ 重启 rsyslog

systemctl restart rsyslog

二、远程日志服务器配置(接收端)

在日志服务器上:

vim /etc/rsyslog.conf

启用 UDP / TCP 接收:

module(load="imudp")
input(type="imudp" port="514")

module(load="imtcp")
input(type="imtcp" port="514")

重启:

systemctl restart rsyslog

防火墙放行:

firewall-cmd --add-port=514/tcp --permanent
firewall-cmd --add-port=514/udp --permanent
firewall-cmd --reload

三、验证转发是否成功

在客户端执行:

logger "test syslog forward"

在服务器查看:

tail -f /var/log/messages

看到 test syslog forward 即成功。


四、常见补充说明

  • CentOS 7+ 默认日志也可能走 journald
    • 可让 journald 转发给 rsyslog:
      vim /etc/systemd/journald.conf
      ForwardToSyslog=yes
      systemctl restart systemd-journald
      
  • 若使用 SELinux,确保允许 syslog 网络:
    setsebool -P syslogd_can_send 1
    

如果你有具体场景(比如:

  • 转发到 ELK / Splunk / Graylog
  • 只转发某服务
  • 使用 TLS 加密
  • CentOS 6 老系统)

可以告诉我,我可以给你更精确的配置。

0 踩