<a href="http://www.9iv.com/down/soft/1504.htm">http://www.9iv.com/down/soft/1504.htm</a>
<a href="http://code.google.com/p/php-syslog-ng/">http://code.google.com/p/php-syslog-ng/</a>
环境介绍
前言:本人也是个新手,只是公司之前用的syslog-ng在处理每天超过1.5G(平均数)的日志量会出现查询和搜索缓慢的问题,而且在高并发的环境中有客户端搜索日志明显存在负载过高。所以我们引用了slunk(商业版)+rsyslog进行日志迁移,本文不打算写的很复杂,本着实用性和更适合国内的需要,略加修改,尽量简化实用,所以这里我的实际环境就是我家的下载盒子(VIA600A+1G+IDE80G+VIA100M网卡)+Linksys wrt54G-dd-wrt v24sp2 Release: 07/21/09 (SVN revision: 12533)+远程的客户端,来模拟一个基本的环境,兄弟在这里抛块砖,欢迎大家做更深入的研究。
需要用到的几个软件:
debian:~# dpkg --list |grep rsyslog
ii rsyslog 3.18.6-4 enhanced multi-threaded syslogd
ii rsyslog-mysql 3.18.6-4 MySQL output plugin for rsyslog
debian:~#
LAMP的基本环境是必须得而且PHP还要支持gd库
debian:~# dpkg --list |grep php
ii libapache2-mod-php5 5.2.6.dfsg.1-1+lenny3 server-side, HTML-embedded scripting languag
ii php5 5.2.6.dfsg.1-1+lenny3 server-side, HTML-embedded scripting languag
ii php5-cli 5.2.6.dfsg.1-1+lenny3 command-line interpreter for the php5 script
ii php5-common 5.2.6.dfsg.1-1+lenny3 Common files for packages built from the php
ii php5-gd 5.2.6.dfsg.1-1+lenny3 GD module for php5
ii php5-mysql 5.2.6.dfsg.1-1+lenny3 MySQL module for php5
ii php5-snmp 5.2.6.dfsg.1-1+lenny3 SNMP module for php5
安装过程简单描述如下:
apt-get install rsyslog rsyslog-mysql
由于采用集中管理,所以原配置大可以抛弃修改如下:(由于本人习惯把附加配置放到*.d的目录下,所以这里rsyslog.d就是后建立的用来放日志的配置模板和过滤条件)
debian:~# cat /etc/rsyslog.conf
# if you experience problems, check
# rsyslog v3: load input modules
# If you do not load inputs, nothing happens!
# You may need to set the module load path if modules are not found.
$ModLoad immark # provides --MARK-- message capability
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imklog # kernel logging (formerly provided by rklogd)
# Include conf.d style configurations
$IncludeConfig /etc/rsyslog.d/*.conf
debian:~# cat /etc/rsyslog.d/mysql.conf
### Configuration file for rsyslog-mysql
### Changes are preserved
$ModLoad ommysql
*.* mmysql:localhost,Syslog,root,*********(数据库密码)
debian:~# cat /etc/rsyslog.d/server.conf |grep -v "^#" |grep -v "^$" (这个是做为服务端必要的配置,相见rsyslog的官方文档)
$ModLoad imtcp.so # load module
$InputTCPServerRun 514 # start up TCP listener at port 514
$ModLoad imudp.so # provides UDP syslog reception
$UDPServerRun 514 # start a UDP syslog server at standard port 514
$DirCreateMode 0755
$umask 0022
$template dd-wrt, "/var/log/rsyslog/%HOSTNAME%/%syslogfacility-text%.%syslogpriority-text%-%$YEAR%%$MONTH%%$DAY%.log"
:fromhost-ip, contains, "192.168.1.254" -?dd-wrt
*.* -?dd-wrt
##根据自己的需要设置目录存储格式,有点和syslog-ng相似。
phplogcron的安装也很简单,主要是目录权限要注意,按照他的提示就可以了,这里把数据库建立的过程丢出来。
debian:~# cat createDB.sql
CREATE DATABASE Syslog;
USE Syslog;
CREATE TABLE SystemEvents
(
ID int unsigned not null auto_increment primary key,
CustomerID bigint,
ReceivedAt datetime NULL,
DeviceReportedTime datetime NULL,
Facility smallint NULL,
Priority smallint NULL,
FromHost varchar(60) NULL,
Message text,
NTSeverity int NULL,
Importance int NULL,
EventSource varchar(60),
EventUser varchar(60) NULL,
EventCategory int NULL,
EventID int NULL,
EventBinaryData text NULL,
MaxAvailable int NULL,
CurrUsage int NULL,
MinUsage int NULL,
MaxUsage int NULL,
InfoUnitID int NULL ,
SysLogTag varchar(60),
EventLogType varchar(60),
GenericFileName VarChar(60),
SystemID int NULL
);
CREATE TABLE SystemEventsProperties
SystemEventID int NULL ,
ParamName varchar(255) NULL ,
ParamValue text NULL
需要把这些导入到数据库当中,数据库名随便,在安装phplogcon的时候会提示的。
注意一个安全问题,就是要通过apache的目录访问权限来认证访问:
Alias /phplog "/data/www/phplog/"
<Directory /data/www/phplog/>
AuthType Basic
AuthName "My Logging Server Login Authenticaion"
AuthUserFile /etc/apache2/passwords
Require user yctang
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
设置成功后服务端就没什么了,重启下看看是不是有日志生成了。
debian:/var/log/rsyslog/fw# ls |grep 0731
user.warn-20090731.log
客户端配置简单说下,由于我是为了记录我家路由器的日志,所以就在DD-WRT的web界面把日志功能打开了,填入服务器的IP
远程客户端是CentOS5 的(@一个是UDP @@两个是TCP)
*.* @@vyatta.****.org:514
其他客户端和网络设备配置可以参考简单修改即可。