把各种应用程序通过syslogd的机制,动态把重要日志写入远端日志服务器,优势是很明显的,主要表现在几个方面: 1 日志统一,集中式管理  2 日志实时传送到一个更加安全的远端服务器上,真正记录用户行为,使日志的2次更改可能性大大降低,从而能够对日志进行真实回放,便于问题追踪。

 事实上,大部分的programe的日志记录总是使用标准的unix domain socket(/dev/log)来实现。这就使的和syslogd联合,并且利用syslogd的远程传送日志功能实现更加安全的远距离日志备份需求。

 本文主要描述把apache,squid日志写通过syslog写入远程日志服务器的配置过程。有兴趣的同学可以看看。

本文所涉及的软件环境:

客户端:
Syslog:rsyslog-relp-3.21.3-4.fc10
rsyslog-3.21.3-4.fc10 
Programe:httpd-2.2.9-1.fc8
squid-2.6.STABLE22-3941.8.fc8

服务器端:
Syslog:rsyslog-relp-3.21.3-4.fc10
rsyslog-3.21.3-4.fc10

日志系统架构图:

使用Rsyslog记录Apache日志_第1张图片



apache,squid和syslog的联动配置简介
这里主要描述本地客户端的配置内容:

 1 首先是配置apache文件,只显示文章话题相关的配置内容:

###/etc/http/conf/httpd.conf
#ErrorLog logs/error_log
ErrorLog syslog     <-----修改配置表示对errorlog启用syslog
#LogLevel warn
LogLevel notice     <-----notice以上的log全部记录,默认的facility是
local7
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
#CustomLog logs/access_log combined
CustomLog "|/usr/bin/logger -p local4.info" combined     <-----access_log全部通过管道写入syslog,并且log的facility配置为local4。

rsyslog的配置如下:
# Load output RELP module
$ModLoad omrelp        <---由于采用的是relp协议传送给远端日志服务器,所以需要导入omrelp模块
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none;local4.none;local7.none    /var/log/messages      <--local4 以及local7日志不写入 /var/log/message,有后面专门的写入文件
# Save local7  to a file
local7.*              /var/log/apache_error_log
# Save local4 to a file
local4.*              /var/log/apache_access_log
# Send local7 to remote syslog
local7.*                :omrelp:syslog.chou.com:2514
<----local7(也就是apache的error_log)除了本地保存一份之外,还通过relp协议送给远端的服务器syslog.chou.com,远端服务器的侦听端口是2514
# Send authentification messages to remote syslog
auth,authpriv.*         :omrelp:syslog.chou.com:2514

  <---服务器的认证信息,属于重要的安全信息,通过relp协议送给远端的服务器syslog.chou.com,远端服务器的侦听端口是2514

重启rsyslog和apache之后,正常情况下应该在远端很本地服务器上看到如下信息:

[root@remote_machine root]# tail -f /var/log/apache_error_log
Oct 6 20:30:53 xxx.xxx httpd[1837]: [notice] Digest: generating secret for digest authentication ...
Oct 6 20:30:53  xxx.xxx  httpd[1837]: [notice] Digest: done
Oct 6 20:30:54  xxx.xxx  httpd[1837]: [notice] Apache/2.2.9 (Unix) DAV/2
PHP/5.2.3 configured -- resuming normal operations

[root@localhost root]# tail -f /var/log/apache_error_log
Oct 6 20:30:53 localhost httpd[1837]: [notice] Digest: generating secret for digest authentication ...
Oct 6 20:30:53 localhost httpd[1837]: [notice] Digest: done
Oct 6 20:30:54 localhost httpd[1837]: [notice] Apache/2.2.9 (Unix) DAV/2

PHP/5.2.3 configured -- resuming normal operation 

2 关于squid的客户端服务器配置如下
####/etc/squid/squid.conf的追加配置如下
access_log syslog:local7.* squid   <---配置squid的访问日志启用syslog,并且定义facility为local7,输出所有级别日志 

rsyslog的配置内容是:(etc/rsyslog.conf)
# Load output RELP module
$ModLoad omrelp        <---由于采用的是relp协议传送给远端日志服务器,所以需要导入omrelp模块
# Don't log private authentication messages!

*.info;mail.none;authpriv.none;cron.none;local7.none    /var/log/messages      <--local7日志不写入 /var/log/message,有后面专门的写入文件

# Save local7  to a file
local7.*              /var/log/squid_access_log
# Send local7 to remote syslog
local7.*                :omrelp:syslog.chou.com:2514

 <----local7(也就是apache的error_log)除了本地保存一份之外,还通过relp协议送给远端的服务器syslog.chou.com,远端服务器的侦听端口是2514

# Send authentification messages to remote syslog
auth,authpriv.*         :omrelp:syslog.chou.com:2514

  <---服务器的认证信息,属于重要的安全信息,通过relp协议送给远端的服务器syslog.chou.com,远端服务器的侦听端口是2514

 

参考:http://wiki.rsyslog.com/index.php/Working_Apache_and_Rsyslog_configuration

 

*.warn;authpriv.notice;auth.notice @@192.168.18.5 #@@TCP/@UDP

  致命级(KERN_EMESG), 

  警戒级(KERN_ALERT), 

  临界级(KERN_CRIT),
  错误级(KERN_ERR), 

  告警级(KERN_WARN), 

  注意级(KERN_NOTICE), 

  通知级(KERN_INFO),
  调试级(KERN_DEBUG).