14.3. 通过 TCP 配置服务器进行远程记录
Rsyslog 应用程序可让您运行日志服务器并配置各个系统将其日志文件发送到日志记录服务器。要通过 TCP 使用远程日志,请同时配置服务器和客户端。服务器收集和分析由一个或多个客户端系统发送的日志。
使用 Rsyslog 应用程序,您可以维护一个集中的日志系统,该系统可通过网络将日志消息转发到服务器。为了避免服务器不可用时消息丢失,您可以为转发操作配置操作队列。这样,无法发送的消息将存储在本地,直到服务器再次可访问为止。请注意,此类队列无法针对使用 UDP 协议的连接配置。
omfwd
插件通过 UDP 或 TCP 提供转发。默认协议是 UDP。由于插件内置在内,因此不必加载它。
默认情况下,rsyslog
使用端口 514
上的 TCP。
先决条件
- rsyslog 已安装在服务器系统上。
-
您以
root
身份登录到服务器中。 -
使用
semanage
命令,为可选步骤安装policycoreutils-python-utils
软件包。 -
firewalld
服务在运行。
流程
可选:要将不同的端口用于
rsyslog
流量,在端口中添加syslogd_port_t
SELinux 类型。例如,启用端口30514
:# semanage port -a -t syslogd_port_t -p tcp 30514
可选:要使用不同的端口用于
rsyslog
流量,将firewalld
配置为允许该端口上传入的rsyslog
流量。例如,允许端口30514
上的 TCP 流量:# firewall-cmd --zone=<zone-name> --permanent --add-port=30514/tcp success # firewall-cmd --reload
在
/etc/rsyslog.d/
目录中创建一个新文件(例如,remotelog.conf
),并插入以下内容:# Define templates before the rules that use them # Per-Host templates for remote systems template(name="TmplAuthpriv" type="list") { constant(value="/var/log/remote/auth/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") } template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") } # Provides TCP syslog reception module(load="imtcp") # Adding this ruleset to process remote messages ruleset(name="remote1"){ authpriv.* action(type="omfile" DynaFile="TmplAuthpriv") *.info;mail.none;authpriv.none;cron.none action(type="omfile" DynaFile="TmplMsg") } input(type="imtcp" port="30514" ruleset="remote1")
-
将更改保存到
/etc/rsyslog.d/remotelog.conf
文件。 测试
/etc/rsyslog.conf
文件的语法:# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run... rsyslogd: End of config validation run. Bye.
确保
rsyslog
服务在日志记录服务器中运行并启用:# systemctl status rsyslog
重新启动
rsyslog
服务。# systemctl restart rsyslog
可选:如果没有启用
rsyslog
,请确保rsyslog
服务在重启后自动启动:# systemctl enable rsyslog
您的日志服务器现在已配置为从您环境中的其他系统接收和存储日志文件。
其他资源
-
rsyslogd(8)
,rsyslog.conf(5)
,semanage(8)
, 和firewall-cmd(1)
man pages. -
在
/usr/share/doc/rsyslog/html/index.html
文件中通过rsyslog-doc
软件包安装的文档。