15.4. 通过 TCP 配置远程日志记录到服务器

按照以下步骤配置通过 TCP 协议将日志消息转发到服务器。omfwd 插件通过 UDP 或 TCP 提供转发。默认协议是 UDP。因为插件内置在内,所以不必加载它。

先决条件

  • rsyslog 软件包安装在应该向服务器报告的客户端系统上。
  • 您已为远程日志记录配置了服务器。
  • 在 SELinux 中允许指定的端口并在防火墙中打开。
  • 系统包含 policycoreutils-python-utils 软件包,它为 SELinux 配置中添加非标准端口提供 semanage 命令。

流程

  1. /etc/rsyslog.d/ 目录中创建一个名为 的新文件,如 10-remotelog.conf,并插入以下内容:

    *.* action(type="omfwd"
          queue.type="linkedlist"
          queue.filename="example_fwd"
          action.resumeRetryCount="-1"
          queue.saveOnShutdown="on"
          target="example.com" port="30514" protocol="tcp"
         )

    其中:

    • queue.type="linkedlist" 设置启用 LinkedList 内存中队列,
    • queue.filename 设置定义磁盘存储。备份文件是使用 example_fwd 前缀,在之前全局 workDirectory 指令指定的工作目录中创建的。
    • action.resumeRetryCount -1 设置防止 rsyslog 在服务器没有响应而重试连接时丢弃消息,
    • 如果 rsyslog 关闭,queue.saveOnShutdown="on" 设置会保存内存中的数据。
    • 最后一行将所有收到的消息转发到日志记录服务器。端口规格是可选的。

      使用这个配置,rsyslog 会向服务器发送消息,但如果远程服务器无法访问,则会将消息保留在内存中。只有 rsyslog 耗尽配置的内存队列空间或需要关闭时,才能创建磁盘上的文件,从而让系统性能受益。

    注意

    rsyslog 按照一般顺序处理配置文件 /etc/rsyslog.d/

  2. 重新启动 rsyslog 服务。

    # systemctl restart rsyslog

验证

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

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

    # logger test
  2. 在服务器系统上,查看 /var/log/messages 日志,例如:

    # 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 软件包安装的文档。