日志管理是网络基础架构中最重要的组件之一。 日志消息由许多系统软件,例如实用程序,应用程序,守护程序,与网络,内核,物理设备等相关的服务不断生成。
日志文件被证明是有用的,以解决Linux系统问题 ,监视系统和审查系统的安全强度和问题。
Rsyslog是一个开源日志程序,它是大量Linux发行版中最流行的日志记录机制。 它也是CentOS 7或RHEL 7中的默认日志记录服务。
CentOS中的Rsyslog守护进程可以配置为作为服务器运行,以便从多个网络设备收集日志消息。 这些设备充当客户端,并配置为将其日志传送到rsyslog服务器。
但是,也可以在客户端模式下配置和启动Rsyslog服务。 此设置指示rsyslog守护程序使用TCP或UDP传输协议将日志消息转发到远程Rsyslog服务器。 Rsyslog服务也可以配置为在同一时间作为客户端和作为服务器运行。
在本教程中,我们将介绍如何设置CentOS / RHEL 7 Rsyslog守护程序,将日志消息发送到远程Rsyslog服务器。 此设置确保您的机器磁盘空间可以保留以存储其他数据。
几乎所有日志文件在CentOS中默认写入的地方是/var
系统路径。 也建议始终为/var
目录创建一个单独的分区,该目录可以动态生成,以便不排除/(root)
分区。
Rsyslog客户端始终以明文形式发送日志消息,否则不指定。 您不应该设置Rsyslog客户端通过Internet或网络传输日志消息,而这些不是完全控制的。
要求
第1步:验证Rsyslog安装
1.默认情况下,Rsyslog守护程序已经安装并在CentOS 7系统中运行。 为了验证系统中是否存在rsyslog服务,请执行以下命令。
# rpm -q | grep rsyslog # rsyslogd -v
检查Rsyslog安装
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的所有日志消息(不管设施或严重程度)发送到主机。
配置Rsyslog客户端
4.如果将远程日志服务器配置为只监听TCP连接,或者想要使用可靠的传输网络协议(如TCP),请在远程主机前添加另一个@
字符,如下例所示:
*. * @@logs.domain.lan:514
Linux rsyslog还允许有一些特殊字符,如=
或!
,其可以作为优先级别前缀,以对等号表示“ 仅此优先级 ”,而“ 不是优先级或高于此 ”。
CentOS 7中的一些Rsyslog优先级限定符示例:
- kern.info =信息优先级更高的内核日志。
- kern。= 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服务器可以配置为通过将以下行添加到其主配置文件中将日志消息发送到远程syslog服务器,如下面的示例所示。
# 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守护程序,将日志消息内部写入文件系统日志文件,还可以通过管道到记录器实用程序进一步处理消息,从而将它们发送到远程syslog服务器,将其标记为来自本地1设施。
8.如果您还要将Apache错误日志消息指向远程syslog服务器,请添加上述示例中所示的新规则,但请确保将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配置文件中直接将其消息记录到远程syslog服务器。
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将其日志消息转发到远程syslog服务器。
如果系统崩溃,您应该能够通过检查存储在远程syslog服务器上的日志文件内容来调查问题。