Apache+PHP+mysql+syslog-ng+php-syslog-ng统一管理日志


1. 首先安装好LAMP这一个组合,在安装的过程中重点关注PHP的安装

./configure --prefix=/usr/local/php5 --enable-mbstring  --with-apxs2=/usr/local/apache2/bin/apxs  --with-mysql=/usr/local/mysql   --with-config-file-path=/usr/local/php5 --with-zlib

make ;make install

安装完成后:

cp php-dist.ini /usr/localphp5/php.ini

vi /usr/localphp5/php.ini

修改:session.save_path = "/tmp"

apachectl restart

Installation syslog-ng

下载php-syslog-ng   

官方地址:http://sourceforge.net/projects/php-syslog-ng/

在解压路径找到作者提供的数据库模板,将其导入数据库,操作如下:

shell> mysql -uroot -p syslog< /your/tar/path/install/dbsetup.sql

这里需要先建立syslog

下载syslog-ng server & clinet,官方地址:http://www.balabit.com

Configure syslog-ng

安装日志服务端,如:

1.rpm -ivh syslog-ng-3.0.9-1.rhel5.i386.rpm

2.vi /syslog-ng/etc /syslog-ng.conf.
source s_all {

internal();

unix-stream("/dev/log");

file("/proc/kmsg" program_override("kernel"));

        udp(

                ip(put.your.server.ip)

                port(514)

        );

        tcp(

                ip(put.your.server.ip)

                port(514)

        );

};

destination d_mysql {
   pipe("/var/log/mysql.pipe"
      template("INSERT INTO logs
      (host, facility, priority, level, tag, datetime, program, msg)
      VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC',
      '$PROGRAM', '$MSG' );\n") template-escape(yes));
};

 

log {
   source(s_all);
   destination(d_mysql);
};

以上内容也可以从php-syslog-ng中获得如:/your/tar/path/scripts/syslog.conf

3.创建管道文件,此文件主要作用是把syslog-ng接收到的日志信息内容转移至数据库中去。

vi /scripts/syslog2myssql.sh

#!/bin/bash

 

if [ ! -e /var/log/mysql.pipe ]

then

        mkfifo /var/log/mysql.pipe

fi

while [ -e /var/log/mysql.pipe ]

do

        mysql -u syslogfeeder --password=PW_HERE syslog < /var/log/mysql.pipe >/dev/null

done

sh /scripts/syslog2myssql.sh &

/etc/init.d/syslog-ng restart

以上内容也可以从php-syslog-ng中获得如:/your/tar/path/scripts/syslog2mysql.sh

在做完这里以后,可以登录数据库查看syslogs.logs表,此表就是记录接收到的日志。

 

Installation syslog-ng-client(Add a log client)

rpm -ivh syslog-ng-client-3.0.9-1.rhel5.i386.rpm

vi /opt/syslog-ng/etc/syslog-ng.conf

destination d_logserver { udp("your.log.server.ip");};
log {
source(s_local);
destination(d_logserver);
};

/etc/init.d/syslog-ng restart

Installation php-syslog-ng

下载php-syslog-ng   

官方地址:http://code.google.com/p/php-syslog-ng/downloads/list?q=label:Deprecated

解压至apache的网页目录如:/usr/local/apache/htdocs/syslog

Chown –R daemon.daemon /usr/local/apache2/htdocs/syslog

IE输入http://yourserverip/syslog/install

根据页面的要求及提示输入数据库的密码等完成安装

完后访问http://yourserverip/syslog/index.php

注:在此第一步对应的页面有红色警告的话最好是解决完后再前进,以免导致莫名其妙的错误码出现,另外需要保证config/config.php是空白而且对于启用apache的程序用户(daemon)需要有写的权限,不然打开页面的时候就只会停留在帮助页面上。

至此大功告成。