Linux集中式日志服务器配置错误

Linux集中式日志服务器配置错误

在此输入图像描述我已经为我的所有 Linux 服务器配置了集中式服务器。我可以将所有系统日志和 Oracle 数据库审计日志转发到集中服务器。但我的问题是所有系统和数据库日志都写入一个文件中。我的要求是将数据库日志写入不同的文件,将系统日志写入集中位置的不同文件。请找到下面的脚本。

  • 192.168.1.150:集中服务器

  • 192.168.1.44:远程服务器

远程服务器配置(192.168.1.44)

$ cat /etc/rsyslog.conf

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

#Save oracle rdbms audit trail to oracle_audit.log
local0.info /u01/app/oracle/admin/prod/adump/oracle_audit.log


*.*     @192.168.1.150:514

集中服务器配置(192.168.1.150):

$ cat /etc/rsyslog.conf 

# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp.so
$InputTCPServerRun 514


$template RemoteHost,"/backup/CentralizeLogLocation/Linuxlogs/%HOSTNAME%/%HOSTNAME%-%$YEAR%%$MONTH%%$DAY%.log"

if ($hostname != '') then ?RemoteHost

&~

这些文件以这种格式为集中式服务器 thsc-vmmanager-20160614.log 中的每个主机创建

看起来一切都很好——我得到了我想要的,但是 Oracle 数据库审计日志和系统日志都写在一个日志文件中。我也附上了屏幕截图。

现在的要求是将这两个文件分开。请指导我如何实现这一目标。

在此输入图像描述

答案1

您可以将 syslog 工具添加%syslogfacility-text%到 RemoteHost 模板,如下所示:

$template RemoteHost,"/backup/CentralizeLogLocation/Linuxlogs/%HOSTNAME%/%HOSTNAME%-%syslogfacility-text%-%$YEAR%%$MONTH%%$DAY%.log"

答案2

在您的集中式服务器中,您已经创建了一个模板,但尚未使用它。尝试在最后添加

if $fromhost-ip startswith 192.168.1.44  then -?RemoteHost
& ~

或者

if $syslogfacility-text isequal 'local0' then -?RemoteHost
& ~

或者您可以将这些结合起来,将您的远程设施 ​​local0(即 oracle 日志)记录到一个文件,并将其余的记录到另一个文件,例如:

if $fromhost-ip == '192.168.1.44' and $syslogfacility-text == 'local0' then /var/log/oracle.log
& ~
*.*  /var/log/messages

& ~行在上一条命令将 oracle 消息保存到文件后将其删除。if。看rsyslog.com以获得大量帮助和示例。

行开头的文件名if可以固定,如/var/log/oracle.log,或您之前定义的模板,如-?OracleData。所以你需要添加,例如,

$template OracleData,"/backup/CentralizeLogLocation/Oracle/%HOSTNAME%/%HOSTNAME%-%$YEAR%%$MONTH%%$DAY%.log"

if $syslogfacility-text isequal 'local0' then -?OracleData
& ~
if $fromhost-ip startswith '192.168.1' then -?RemoteHost
& ~
*.*  /var/log/messages

由于您的 oracle 日志消息包含单词“Oracle”,您也可以使用以下命令拆分这些消息:

if $msg contains 'Oracle' then -?OracleData
& ~

请注意,这些行的顺序很重要。必须在使用模板之前对其进行定义。这些规则依次应用于每条消息。如果您不将这些& ~行紧接在这些行之后if,那么该消息可能会出现在多个日志文件中。

相关内容