温馨提示×

Ubuntu Syslog与远程日志服务器的集成方法

小樊
40
2025-12-16 23:06:47
栏目: 云计算

Ubuntu Syslog与远程日志服务器的集成方法

一、方案总览与选择

  • 常用方案包括:使用系统自带的 rsyslogsyslog-ng 进行原生转发;在复杂场景引入 Fluentd/Logstash 做日志采集与转发。
  • 协议与端口:Syslog 默认使用 UDP/TCP 514;生产环境建议优先 TCPTLS 以提升可靠性与安全性。
  • 典型架构:客户端将日志发往集中式日志服务器(可落地到文件或进一步送入 Elasticsearch/Kafka 等)。

二、使用 rsyslog 快速集成

  • 客户端配置
    1. 安装并启用服务 sudo apt-get update sudo apt-get install rsyslog sudo systemctl enable --now rsyslog
    2. 编辑配置(推荐在 /etc/rsyslog.d/50-remote.conf 添加)

      使用 UDP 发送至远程服务器 10.0.0.10 的 514 端口

      . @10.0.0.10:514

      如需 TCP

      . @@10.0.0.10:514

    3. 重启服务 sudo systemctl restart rsyslog
  • 服务器端配置(接收端)
    1. 启用网络输入模块(取消注释或新增)

      UDP

      module(load=“imudp”) input(type=“imudp” port=“514”)

      TCP

      module(load=“imtcp”) input(type=“imtcp” port=“514”)
    2. 可选:按来源隔离日志

      将来自 192.168.1.0/24 的日志单独落盘

      if $fromhost-ip startswith ‘192.168.1.’ then /var/log/remote/192.168.1.x.log & stop
    3. 重启服务 sudo systemctl restart rsyslog
    4. 防火墙放行 sudo ufw allow 514/udp sudo ufw allow 514/tcp
  • 说明
    • 转发语法:@ 表示 UDP@@ 表示 TCP
    • 如需按设施/级别精细化转发,可使用选择符(如:authpriv.、cron.、local0. → @@10.0.0.10:514*)。

三、使用 syslog-ng 集成

  • 客户端配置
    1. 安装 sudo apt-get update sudo apt-get install syslog-ng
    2. 编辑 /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); };
    3. 重启 sudo systemctl restart syslog-ng
  • 服务器端配置(接收端)
    1. 编辑 /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); };
    2. 重启 sudo systemctl restart syslog-ng
    3. 防火墙放行 514/udp514/tcp

四、进阶方案与生态集成

  • 使用 Fluentd 作为转发器
    1. 安装(以 td-agent 为例) curl -fsSL https://toolbelt.treasuredata.com/sh/install-debian-buster-td-agent4.sh | sh
    2. 配置 /etc/td-agent/td-agent.conf @type syslog port 514 tag system.log @type none @type forward host 10.0.0.10 port 24224
    3. 重启 sudo systemctl restart td-agent
  • 使用 Logstash 接收与转发
    1. 安装(示例为 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
    2. 配置 /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 }

      }
    3. 启动 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/udp514/tcp
    • 协议不匹配:客户端用 @@(TCP)而服务器仅开了 UDP,或反之。
    • SELinux/AppArmor:必要时调整策略以允许 rsyslog/syslog-ng 绑定 514 端口。
    • 旧版兼容:部分老系统使用 /etc/default/syslogdSYSLOGD=“-r” 开启远程 UDP 监听(现代 Ubuntu 多使用 rsyslog 模块方式)。
  • 安全加固建议

    • 优先使用 TCPTLS 传输;rsyslog 可结合 TLS 模块加密通道。
    • 在服务器侧限制来源网段(如仅允许办公网段或跳板机网段)。
    • 为日志目录设置最小权限与日志轮转(如 logrotate),避免磁盘被占满。

0