日志管理是网络基础架构中最重要的组件之一。许多系统软件都会生成日志信息,例如:实用程序,应用程序,守护程序,与网络、内核、物理设备等相关的服务等等程序。
在解决Linux系统问题、监视系统和审查系统的安全强度等问题时,日志文件是非常有用的。
Rsyslog是一个开源的日志程序,它是大量Linux发行版中最流行的日志记录机制。它也是CentOS 7或RHEL 7中的默认日志记录服务。
CentOS中的Rsyslog守护进程可以配置为作为服务端运行,以便从多个网络设备收集日志信息。这些设备充当客户端,并配置为将其日志信息传送给Rsyslog服务器。
但是,也可以在客户端模式下配置和启动Rsyslog服务。此设置指示rsyslog守护程序使用TCP或UDP传输协议将日志消息转发到远程Rsyslog服务器。 Rsyslog服务也可以配置为在同一时间作为客户端和作为服务器运行。
在本教程中,我们将介绍如何设置CentOS/RHEL 7 Rsyslog守护程序,将日志消息发送到远程Rsyslog服务器。此设置确保您的机器磁盘空间可以保留以存储其他数据。
在CentOS系统中,几乎所有日志文件默认写入的地方都是/var系统路径。也建议始终为/var目录创建一个单独的分区,该
目录可以动态生成,以便不排除/(根)分区。
Rsyslog客户端始终以明文形式发送日志消息,否则不指定。您不应该设置Rsyslog客户端通过Internet或网络传输日志消
息,而这些不是完全控制的。
步骤一:验证Rsyslog是否已安装
1.默认情况下,CentOS 7系统已经安装好了Rsyslog守护程序并且它已居后台运行中了。为了验证你的系统中是否存在
rsyslog服务,请执行以下命令:
[[email protected] ~]# rpm -q | grep rsyslog
[[email protected] ~]# rsyslogd -v
2.如果你的CentOS系统中未安装Rsyslog软件包,请执行以下命令安装该服务:
[[email protected] ~]# yum install rsyslog
步骤二:将Rsyslog服务配置为客户端
3.为了执行安装在CentOS 7系统上的Rsyslog守护进程作为日志客户端,并将所有本地生成的日志消息路由到远程Rsyslog服务器,请修改rsyslog配置文件,如下所示:
首先打开主配置文件进行编辑。
[[email protected] ~]# vi /etc/rsyslog.conf
然后,在文件末尾追加下面的一行:
*. * @192.168.10.254:514
在上述行中确保相应地替换远程rsyslog服务器FQDN的IP地址为你自己的rsyslog服务器地址。 上述行指示Rsyslog守护程序通过514 / UDP端口将所有日志消息(不管设施或严重程度)发送到主机192.168.10.254:514。
4.如果将远程日志服务器配置为只侦听TCP连接,或者想要使用可靠的传输网络协议(如TCP),请在远程主机前添加另一个@字符,如下例所示:
*. * @@logs.serviec-labs.com:514
Linux rsyslog还允许有一些特殊字符,例如=或!,它们可以作为优先级前缀,以表示“仅此优先级”等号,而“不是此优先级或高于此”。
CentOS 7中的一些Rsyslog优先级限定符示例:
kern.info = kernel logs with info priority and higher.
kern.=info = only kernel messages with info priority.
kern.info;kern.!err = only kernel messages with info, notice, and warning priorities.
kern.debug;kern.!=warning = all kernel priorities except warning.
kern.* = all kernel priorities messages.
kern.none = don’t log any related kernel facility messages regardless of the priority.
例如,假设您只想将特定工具消息发送到远程日志服务器,例如所有相关的邮件消息,而不考虑优先级,请将以下行添加到rsyslog配置文件中:
mail.* @192.168.10.254:514
5.最后,为了应用新配置,需要重新启动Rsyslog服务,以便守护程序通过运行以下命令来接管更改:
[[email protected] ~]# systemctl restart rsyslog.service
6.如果由于某些原因,在启动时没有启用Rsyslog守护程序,请执行以下命令以启用服务系统范围:
[[email protected] ~]# systemctl enable rsyslog.service
步骤三:将Apache和Nginx日志发送到远程日志服务器
7. Apache HTTP服务器可以配置为通过将以下行添加到其主配置文件中将日志消息发送到远程syslog服务器,如下面的示例所示。
[[email protected] ~]# 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服务器,将其标记为来自local1设施。
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守护程序以应用更改,方法是发出以下命令:
[[email protected] ~]# 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服务器上的日志文件内容来调查问题。