14.4. 通过 TCP 配置远程日志记录到服务器
您可以配置系统,以通过 TCP 协议将日志消息转发到服务器。omfwd
插件通过 UDP 或 TCP 提供转发。默认协议是 UDP。因为插件内置在内,所以不必加载它。
先决条件
-
rsyslog
软件包安装在应该向服务器报告的客户端系统上。 - 您已为远程日志记录配置了服务器。
- 在 SELinux 中允许指定的端口并在防火墙中打开。
-
系统包含
policycoreutils-python-utils
软件包,它为 SELinux 配置中添加非标准端口提供semanage
命令。
流程
在
/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/
。-
重新启动
rsyslog
服务。# systemctl restart rsyslog
验证
要验证客户端系统向服务器发送信息,请按照以下步骤执行:
在客户端系统中发送测试信息:
# logger test
在服务器系统上,查看
/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
软件包安装的文档。