23.5. 在日志记录服务器上配置 rsyslog
					rsyslog 服务提供运行日志记录服务器和将各个系统配置为将其日志文件发送到日志记录服务器的功能。有关客户端 rsyslog 配置的详情,请查看 例 23.12 “可靠将日志消息转发至服务器”。
				
					rsyslog 服务必须安装到您要用作记录服务器的系统上,并且要配置为向其发送日志的所有系统。默认情况下,Red Hat Enterprise Linux 7 中会安装 rsyslog。如果需要,请以 root 用户身份 输入以下命令:
				
yum install rsyslog
~]# yum install rsyslog
					系统日志流量的默认协议和端口为 UDP 和 514,如 /etc/services 文件中列出的。但是,r syslog 默认为在端口 514 上使用 TCP。在 配置文件 /etc/rsyslog.conf 中,TCP 由 @@ 表示。
				
示例有时会使用其他端口,但 SELinux 被配置为默认允许在以下端口上发送和接收:
semanage port -l | grep syslog
~]# semanage port -l | grep syslog
syslog_tls_port_t       tcp   6514, 10514
syslog_tls_port_t       udp   6514, 10514
syslogd_port_t         tcp   601, 20514
syslogd_port_t         udp   514, 601, 20514
					semanage 实用程序作为 policycoreutils-python 软件包的一部分提供。如果需要,按以下方式安装软件包:
				
yum install policycoreutils-python
~]# yum install policycoreutils-python
					此外,默认情况下,rsyslog d _t 的 SELinux 类型被配置为允许通过 SELinux typersh _port_t 发送和接收到远程 shell(rsh )端口,默认为 514 端口。因此,不需要使用 semanage 来显式允许端口 514 上的 TCP。例如,要在端口 514 中检查将哪个 SELinux 设置为允许,请按如下所示输入命令:
				
semanage port -l | grep 514
~]# semanage port -l | grep 514
output omitted
rsh_port_t           tcp   514
syslogd_port_t         tcp   6514, 601
syslogd_port_t         udp   514, 6514, 601有关 SELinux 的更多信息,请参阅 Red Hat Enterprise Linux 7 SELinux 用户和管理员指南。
					在您要用作记录服务器的系统上执行以下步骤。必须以 root 用户身份 执行这些步骤中的所有步骤。
				
将 SELinux 配置为允许端口上的 rsyslog 流量
						如果需要将新端口用于 rsyslog 流量,请在日志记录服务器和客户端上按照以下步骤操作。例如,要在端口 10514 上发送和接收 TCP 流量,请执行以下命令顺序:
					
- 使用以下参数运行 - semanage port命令:- semanage port -a -t syslogd_port_t -p tcp 10514 - ~]# semanage port -a -t syslogd_port_t -p tcp 10514- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 输入以下命令检查 SELinux 端口: - semanage port -l | grep syslog - ~]# semanage port -l | grep syslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果在 - /etc/rsyslog.conf中配置了新端口,请重启- rsyslog以使更改生效:- service rsyslog restart - ~]# service rsyslog restart- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证 - rsyslog正在侦听哪些端口:- netstat -tnlp | grep rsyslog - ~]# netstat -tnlp | grep rsyslog tcp 0 0 0.0.0.0:10514 0.0.0.0:* LISTEN 2528/rsyslogd tcp 0 0 :::10514 :::* LISTEN 2528/rsyslogd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
					有关 semanage 。
				port 命令的详情,请查看 semanage -port(8)手册页
配置 firewalld
						配置 firewalld 以允许传入的 rsyslog 流量。例如,要允许端口 10514 上的 TCP 流量,请按如下操作:
					
firewall-cmd --zone=zone --add-port=10514/tcp
~]# firewall-cmd --zone=zone --add-port=10514/tcp
success
					其中 zone 是要使用的接口区。请注意,在系统下次启动后这些更改不会保留。要永久更改防火墙,请重复添加 --permanent 选项的命令。有关在 firewalld 中打开和关闭端口的更多信息,请参阅 Red Hat Enterprise Linux 7 安全指南。
				
- 要验证上述设置,请使用以下命令: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
将 rsyslog 配置为接收和排序远程日志消息
- 在文本编辑器中打开 - /etc/rsyslog.conf文件,如下所示:- 在 modules 部分下方添加这些行,但在 - Provides UDP syslog 接收部分上方:- Define templates before the rules that use them Per-Host Templates for Remote Systems # - # Define templates before the rules that use them # Per-Host Templates for Remote Systems # $template TmplAuthpriv, "/var/log/remote/auth/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" $template TmplMsg, "/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将默认的 - Provides TCP syslog 接收部分替换为以下内容:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 保存对 - /etc/rsyslog.conf文件的更改。
 
- rsyslog服务必须在日志记录服务器和尝试登录到该服务器的系统上运行。- 使用 - systemctl命令启动- rsyslog服务。- systemctl start rsyslog - ~]# systemctl start rsyslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要确保 - rsyslog服务以后自动启动,以 root 用户身份输入以下命令:- systemctl enable rsyslog - ~]# systemctl enable rsyslog- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
您的日志服务器现在已配置为从环境中的其他系统接收和存储日志文件。
23.5.1. 在日志记录服务器上使用新模板语法
rsyslog 7 具有多种不同的模板样式。字符串模板与传统格式最相似。使用字符串格式从上例中重现模板,如下所示:
这些模板也可以采用列表格式编写,如下所示:
此模板文本格式可能更易于阅读,以方便那些新的 rsyslog 读取,因此更容易根据要求的变化进行调整。
要完成对新语法的更改,我们需要重现模块 load 命令,添加规则集,然后将规则集绑定到协议、端口和规则集: