商城首页欢迎来到中国正版软件门户

您的位置:首页 >如何在Linux中配置具体的日志远程同步转发

如何在Linux中配置具体的日志远程同步转发

  发布于2026-08-11 阅读(0)

扫一扫,手机访问

大多数情况下,rsyslog 日志发不出去,根子都在这几类问题上:默认没有启用 UDP/TCP 模块,或者被防火墙、SELinux 直接拦住了。更稳妥的做法是,先执行 rsyslogd -N1,确认 imudp、imtcp 是否已经加载;如果没加载,就在配置文件开头补上 module(load="imudp") 和 module(load="imtcp"),同时把对应的 input 规则一并配好。

如何在Linux中配置具体的日志远程同步转发

rsyslog 配置远程转发时,为什么日志发不出去?

绝大多数情况是 rsyslog 默认没启用 UDP/TCP 网络模块,或防火墙/SELinux 拦截了连接。确认配置前先检查模块是否加载:

  • 运行 rsyslogd -N1,若报错 imudpimtcp not found,说明对应模块未加载
  • /etc/rsyslog.conf/etc/rsyslog.d/50-default.conf 开头添加:
    module(load="imudp")
    input(type="imudp" port="514")
    module(load="imtcp")
    input(type="imtcp" port="514")
  • UDP 转发不保证可靠,生产环境建议用 TCP(加 @@ 前缀),但需确保接收端也监听 TCP

如何把特定 facility 的日志单独发到远程服务器

不能只靠全局 *.* @@remote:514,否则所有日志混在一起。要用规则匹配 + 模板 + 动作分离:

  • 定义模板避免时间戳/主机名格式不一致:
    template(name="RemoteFormat" type="string" string="%protocol-version% %timestamp:::date-rfc3339% %hostname% %app-name% %procid% %msg%n")
  • 按 facility 过滤并绑定模板:
    if $syslogfacility-text == 'auth' then {
    action(type="omfwd" target="192.168.10.20" port="514" protocol="tcp" template="RemoteFormat")
    }
  • $syslogfacility-text 是字符串值(如 authdaemon),不是数字;用 == 比较,不要用 =~ 正则除非必要

journalctl 日志能否直接远程转发?

不能直接转发,systemd-journald 不提供原生网络输出。必须通过 rsyslogsyslog-ng 接入:

  • 确保 /etc/rsyslog.conf 中有 $ModLoad imjournal(rsyslog v8+)
  • 重启 rsyslog 后,journal 日志会自动注入 rsyslog 流程,再按前述规则转发
  • 若发现 journal 日志缺失,检查 imjournal 是否启用,以及 /run/systemd/journal/dev-log 权限是否为 srw-rw---- systemd-journal
  • 注意:journal 的 _HOSTNAMESYSLOG_IDENTIFIER 字段会被映射为 rsyslog 的 $hostname$programname,可用于过滤

远程转发失败时,怎么快速定位是哪一环断了?

别只盯着 rsyslog 配置,分层验证更省时间:

  • 本地测试:用 logger -p auth.info "test msg" 发一条日志,然后 tail -f /var/log/syslog 看是否生成 → 排除应用层问题
  • 本地收发测试:在本机启动临时接收端 nc -u -l -p 514(UDP)或 nc -l -p 514(TCP),再发日志看能否收到 → 判断 rsyslog 输出是否生效
  • 网络连通性:用 telnet 192.168.10.20 514(TCP)或 nc -u 192.168.10.20 514(UDP)测端口 → 确认防火墙和路由
  • 接收端检查:远程服务器上运行 ss -tuln | grep :514,确认监听的是 0.0.0.0:514 而非 127.0.0.1:514

最容易被忽略的是接收端的 bind 地址和 SELinux 的 syslogd_port_t 上下文——哪怕端口开着,SELinux 也可能静默丢包。

本文转载于:https://www.php.cn/faq/2972538.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注