需要apache,mysql和php环境
安装
1.运行syslog-ng-3.2beta1-linux-glibc2.3.6-amd64.run
默认是装在opt下,可能会需要安装eventlog。
修改/opt/syslog-ng/etc/syslog-ng.conf ,加上以下内容。
source src {
unix-dgram("/var/run/log");
unix-dgram("/var/run/logpriv" perm(0600));
udp(
ip(0.0.0.0)
port(514)
);
tcp(
ip(0.0.0.0)
port(514)
);
internal();
file("/dev/klog");
};
***按格式把日志内容写到pipe里面
destination d_mysql {
pipe("/tmp/mysql.syslog-ng.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(src); destination(d_mysql); };***
EOF
*******这是一般的syslogng配置格式,包括source,destination,log 3个部分,有兴趣的话还可以加上日志级别的定义:
filter f_debug { level(debug); };(记录debug以上级别的日志)
相应地:log { source(src); filter(f_debug); destination(d_mysql); };
查看是否有pipe
ls -lah /tmp/mysql.syslog-ng.pipe
如果没有的话,创建一个
mkfifo /tmp/mysql.syslog-ng.pipe
2.创建表
phpsyslogng 的dbsetup.sql中缺少指定数据库的语句,你需要先加上这样一句话:USE 你的数据库;
执行
mysql -u root -p <phpsyslogng/install/sql/dbsetup.sql
3,创建一个shell脚本,将pipe里的数据写到mysql里去
#!/bin/sh
#
# File: syslogng-mysql-pipe.sh
#
# Take input from a FIFO and run execute it as a query for
# a mysql database.
#
# IMPORTANT NOTE: This could potentially be a huge security hole.
# You should change permissions on the FIFO accordingly.
#
if [ -e /tmp/mysql.syslog-ng.pipe ]; then
while [ -e /tmp/mysql.syslog-ng.pipe ]
do
mysql -usyslog --password=mypasswordhere logs < /tmp/mysql.syslog-ng.pipe
done
else
mkfifo /tmp/mysql.syslog-ng.pipe
fi
EOF
在后台执行脚本(加上&)
Sh /usr/local/etc/syslog-ng/syslog-ng-mysql-pipe.sh &
return=`ps -ef |grep syslogng|grep pipe|grep -v restart.sh`
echo $return
echo "noproc"
exit 0
else
/bin/sh /opt/syslog-ng/etc/syslogng-mysql-pipe.sh &
fi
重启syslogng:
/etc/init.d/syslog-ng restart
修改配置phpsyslogng/config/config.php
至少确认这几项是正确的DEFAULTLOGTABLE,DBUSER(数据库用户),DBUSERPW,DBADMIN(数据库管理员),DBADMINPW,DBNAME,
另外我设置了不用用户验证'REQUIRE_AUTH', FALSE
把php-syslog-ng放到apache下发布即可。我下的这个版本:php-syslog-ng-2.9.1r10里的regularresult.php和common_funcs.php有几处语法错误(郁闷了一阵-_-!)
如下
?><meta http-equiv="refresh" content="0;url=<?=$url?>" /><?
在<?后面加上php