网站搜索

如何在 CentOS 7 中设置 Rsyslog 客户端将日志发送到 Rsyslog 服务器


日志管理是网络基础设施中最关键的组件之一。日志消息由众多系统软件不断生成,例如实用程序、应用程序、守护程序、与网络、内核、物理设备相关的服务等。

事实证明,日志文件对于排除 Linux 系统问题、监控系统以及检查系统安全强度和问题非常有用。

Rsyslog 是一个开源日志程序,是众多 Linux 发行版中最流行的日志机制。它也是 CentOS 7RHEL 7 中的默认日志记录服务。

CentOS 中的 Rsyslog 守护进程可以配置为作为服务器运行,以便从多个网络设备收集日志消息。这些设备充当客户端,并配置为将其日志传输到 rsyslog 服务器。

但是,Rsyslog服务也可以在客户端模式下配置和启动。此设置指示 rsyslog 守护进程使用 TCP 或 UDP 传输协议将日志消息转发到远程 Rsyslog 服务器。 Rsyslog 服务还可以配置为同时作为客户端和服务器运行。

在本教程中,我们将描述如何设置 CentOS/RHEL 7 Rsyslog 守护进程以将日志消息发送到远程 Rsyslog 服务器。此设置可确保您的计算机磁盘空间可以保留用于存储其他数据。

CentOS中几乎所有日志文件默认写入的位置都是/var系统路径。还建议始终为 /var 目录创建一个单独的分区,该分区可以动态增长,以免耗尽 /(root) 分区。

如果没有另外指定,Rsyslog 客户端始终以纯文本形式发送日志消息。您不应设置 Rsyslog 客户端通过 Internet 或不受您完全控制的网络传输日志消息。

要求

  1. CentOS 7.3安装过程
  2. RHEL 7.3 安装过程
  3. 在 CentOS/RHEL 7 中配置 Rsyslog 服务器

第 1 步:验证 Rsyslog 安装

1. 默认情况下,Rsyslog 守护进程已在 CentOS 7 系统中安装并运行。为了验证系统中是否存在 rsyslog 服务,请发出以下命令。

rpm -q | grep rsyslog
rsyslogd -v

2.如果CentOS中未安装Rsyslog软件包,请执行以下命令安装该服务。

yum install rsyslog

步骤2:将Rsyslog服务配置为客户端

3. 为了强制安装在 CentOS 7 系统上的 Rsyslog 守护进程充当日志客户端并将所有本地生成的日志消息路由到远程 Rsyslog 服务器,请修改rsyslog配置文件如下:

首先打开主配置文件进行编辑。

vi /etc/rsyslog.conf

然后,将以下行附加到文件末尾,如下面的摘录所示。

*. *  @192.168.10.254:514

在上面的行中,确保相应地替换远程 rsyslog 服务器的 FQDN 的 IP 地址。上述行指示 Rsyslog 守护进程将所有日志消息(无论设施或严重性如何)通过 514/UDP 端口发送到具有 IP 192.168.10.254 的主机。

4.如果远程日志服务器配置为仅监听TCP连接或者您想使用可靠的传输网络协议,例如TCP,请在前面添加另一个@字符远程主机的信息如下例所示:

*. *  @@logs.domain.lan:514

Linux rsyslog 还允许使用一些特殊字符,例如 =!,它们可以作为优先级的前缀,以指示“仅此优先级” ”代表等号,“不是这个优先级或高于这个优先级”。

CentOS 7 中 Rsyslog 优先级限定符的一些示例:

  • kern.info=具有 info 优先级及更高优先级的内核日志。
  • kern.=info=仅具有 info 优先级的内核消息。
  • kern.info;kern.!err=仅包含信息、通知和警告优先级的内核消息。
  • kern.debug;kern.!=warning=除警告之外的所有内核优先级。
  • kern.*=所有内核优先级消息。
  • kern.none=无论优先级如何,都不记录任何相关的内核设施消息。

例如,假设您只想将特定的设施消息发送到远程日志服务器,例如所有相关的邮件消息,无论优先级如何,请将以下行添加到 rsyslog 配置文件中:

mail.* @192.168.10.254:514 

5.最后,为了应用新配置,需要通过运行以下命令重新启动 Rsyslog 服务,以便守护进程接收更改:

systemctl restart rsyslog.service

6. 如果由于某些原因 Rsyslog 守护进程在启动时未启用,请发出以下命令以在系统范围内启用该服务:

systemctl enable rsyslog.service

步骤3:将Apache和Nginx日志发送到远程日志服务器

7. Apache HTTP 服务器可以配置为将日志消息发送到远程系统日志服务器,方法是将以下行添加到其主配置文件中,如下例所示。

vi /etc/httpd/conf/httpd.conf

在 Apache 主conf 文件中添加以下行。

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

该行将强制 HTTP 守护进程将日志消息内部写入文件系统日志文件,而且还通过记录器实用程序的管道进一步处理消息,该实用程序将它们标记为来自本地1,将它们发送到远程系统日志服务器设施。

8. 如果您还想将 Apache 错误日志消息定向到远程系统日志服务器,请添加一条新规则,如上例所示,但请确保替换httpd 日志文件的名称和日志文件严重性级别以匹配错误优先级,如以下示例所示:

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. 添加上述行后,您需要通过发出以下命令重新启动 Apache 守护程序以应用更改:

systemctl restart httpd.service                 

10. 从版本 1.7.1 开始,Nginx Web 服务器具有内置功能,可以通过添加以下几行来直接将其消息记录到远程系统日志服务器代码到 nginx 配置文件。

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

对于 IPv6 服务器,请使用以下语法格式将 IPv6 地址括起来。

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. 在远程 Rsyslog 服务器上,您需要对 rsyslog 配置文件进行以下更改,以便接收 Apache Web 服务器发送的日志。

local1.* @Apache_IP_address:514

就这样!您已成功配置Rsyslog守护进程以客户端模式运行,并且还指示Apache HTTP服务器或Nginx转发其日志消息到远程系统日志服务器。

如果系统崩溃,您应该能够通过检查远程系统日志服务器上存储的日志文件内容来调查问题。