15.9. 配置可靠的远程日志记录

通过可靠的事件日志记录协议(RELP),您可以降低消息丢失的风险通过 TCP 发送和接收 syslog 消息。RELP 提供可靠的事件消息交付,这对于无法接受消息丢失的环境中非常有用。要使用 RELP,请配置服务器上运行的 imrelp 输入模块并接收日志,以及在客户端上运行的 omrelp 输出模块,并将日志发送到日志记录服务器。

先决条件

  • 您已在服务器和客户端系统中安装了 rsysloglibrelprsyslog-relp 软件包。
  • 在 SELinux 中允许指定的端口并在防火墙中打开。

流程

  1. 配置客户端系统以可靠远程记录:

    1. 在客户端系统上,在 /etc/rsyslog.d/ 目录中创建一个新的 .conf 文件,例如 relpclient.conf,并插入以下内容:

      module(load="omrelp")
      *.* action(type="omrelp" target="_target_IP_" port="_target_port_")

      其中:

      • target_IP 是日志记录服务器的 IP 地址。
      • target_port 是日志记录服务器的端口。
    2. 保存对 /etc/rsyslog.d/relpclient.conf 文件的更改。
    3. 重新启动 rsyslog 服务。

      # systemctl restart rsyslog
    4. 可选:如果没有启用 rsyslog,请确保 rsyslog 服务在重启后自动启动:

      # systemctl enable rsyslog
  2. 配置服务器系统以可靠远程记录:

    1. 在服务器系统中,在 /etc/rsyslog.d/ 目录中创建一个新的 .conf 文件,例如 reserv.conf,并插入以下内容:

      ruleset(name="relp"){
      *.* action(type="omfile" file="_log_path_")
      }
      
      
      module(load="imrelp")
      input(type="imrelp" port="_target_port_" ruleset="relp")

      其中:

      • log_path 指定存储消息的路径。
      • target_port 是日志记录服务器的端口。使用与客户端配置文件中相同的值。
    2. 保存对 /etc/rsyslog.d/relpserv.conf 文件的更改。
    3. 重新启动 rsyslog 服务。

      # systemctl restart rsyslog
    4. 可选:如果没有启用 rsyslog,请确保 rsyslog 服务在重启后自动启动:

      # systemctl enable rsyslog

验证

要验证客户端系统向服务器发送信息,请按照以下步骤执行:

  1. 在客户端系统中发送测试信息:

    # logger test
  2. 在服务器系统中,查看指定 log_path 的日志,例如:

    # cat /var/log/remote/msg/hostname/root.log
    Feb 25 03:53:17 hostname root[6064]: test

    其中 hostname 是客户端系统的主机名。请注意,该日志包含输入 logger 命令的用户的用户名,本例中为 root

其他资源

  • rsyslogd(8)rsyslog.conf(5) 手册页。
  • /usr/share/doc/rsyslog/html/index.html 文件中通过 rsyslog-doc 软件包安装的文档。