分类: LINUX
2011-08-18 14:43:55
2、编译及安装
解压:
# tar xzvf syslog-ng-2.0.5.src.tar.gz
# rpm -ivh eventlog-0.2.5-1.src.rpm
# rpm -ivh syslog-ng-2.0.5-1.src.rpm
编译及安装eventlog:
# cd /usr/src/asianux/RPMS/SPECS
# rpmbuild -bb eventlog.spec
# cd /usr/src/asianux/RPMS/i386/
# rpm -ivh eventlog-devel-0.2.5-1.i386.rpm eventlog-0.2.5-1.i386.rpm
编译及安装syslog-ng:
# cd /usr/src/asianux/RPMS/SPECS
# rpmbuild -bb syslog-ng.spec
# rpm -Uvh syslog-ng-2.0.5-2qk.i386.rpm syslog-ng-vim-2.0.5-2qk.i386.rpm
※为兼容系统自带syslog-ng套件,该rpm包,已把原来的/etc/syslog-ng.conf路径修改为/etc/syslog-ng/syslog-ng.conf。
另外,编译时,还需依赖libnet包。
三:安装php-syslog-ng
下载地址:
1、解压
# mkdir /var/www/html/php-syslog-ng/
# tar xzvf php-syslog-ng-2.9.3l.tgz -C /var/www/html/php-syslog-ng/
# cd /var/www/html/php-syslog-ng/
# chown -R apache.apache html/
上述不是必须的,但作为建议选项。另外,新版php-syslog-ng已在.htaccess中定义magic_quotes_gpc和register_globals选项,可不修改全局配置。
3、创建日志目录
# mkdir -p /var/log/httpd/php-syslog-ng
# mkdir -p /var/log/php-syslog-ng
然后,重启apache:
# service httpd restart
5、安装数据库
访问进行数据库安装:
校验系统环境,有问题,参考上面的步骤是否有错。
查看协议:
配置数据库参数:
其中需要注意:
如果你选择安装CEMDB数据,这需要花费一定的时间:
输入网页的标题:
输入php-syslog-ng的管理信息:
可输入管理员的Email地址,以及管理员密码。
php-syslog-ng会自动创建一个随机密码,你可以修改
安装完成,并会提示你管理员的信息:
至此Web部分已经完成。
但因为,syslog-ng还未把数据导向mysql,所以,此时网页中并没有数据的。
6、配置脚本
进入scripts目录,并运行:
# cd /var/www/html/php-syslog-ng/scripts/
# perl -i -pe 's/\/www\/php-syslog-ng/\/var\/www\/html\/php-syslog-ng/g' *
Can't do inplace edit: cemdb is not a regular file, <> line 30.
最后的信息是提示cemdb是个目录,不能替换。该目录中的文件不要修改,所以,该信息可以忽略。
接下来,需要配置syslog-ng,把日志信息导向mysql的pipe接口。
7、配置syslog-ng
其配置文件在:/etc/syslog-ng.conf,加入:
或使用scripts的脚本:
# cat syslog.conf >> /etc/syslog-ng/syslog-ng.conf
※注意:需把源驱动器的s_all修改为s_sys。
8、创建mysql的pipe通道
首先确认一下scripts目录中,syslog2mysql.sh脚本来的配置文件路径是否正确,若没问题,运行它:
# /var/www/html/php-syslog-ng/scripts/syslog2mysql.sh >> /var/log/php-syslog-ng/mysql.log 2>&1 &
若日志没有报错,即可。
9、重启syslog-ng服务
若syslog未关闭,请执行:
# service syslog stop
# service syslog-ng start
# chkconfig syslog off
# chkconfig --level 2345 syslog-ng on
从Web进入php-syslog-ng,应可正常使用:
若使用php-syslog-ng对日志进行集中管理,其数据量可能是相当巨大的,必须考虑日志循环的问题。可以使用计划任务实现。
1、配置计划任务
使用crontab -e加入:
或确认scripts脚本中的crontab文件路径正确后,运行:
# cat crontab >> /var/spool/cron/root
※注意:
1、请把运行dbgen.pl的命令删除,该脚本只是用于产生演示数据,详见后面说明。
2、执行php脚本的时候可能会包oci8.so错误,后面也有说明。
3、原find语句存在Bug,请加入-type f选项,否则会报如下的错误:
rm: cannot remove `/var/www/html/php-syslog-ng/html/jpcache/': Is a directory
2、配置日志循环
# cp logrotate.d /etc/logrotate.d/php-syslog-ng
php-syslog-ng的配置安装到此结束啦----嘎嘎-----
php-syslog-ng脚本功能解释:
五、scripts中的脚本
对scripts目录中其他的文件讲解以下:
请留意,.sh结尾的是bash脚本,可直接执行;而.pl的是perl脚本,使用perl执行;而.php结尾的是php脚本,需使用php命令执行。
1、logrotate.php
对php-syslog-ng中的表进行日志循环,其与系统的logrotate不同。该脚本的执行结果,是把每天的日志表备份起来,并创建一个新的日志表供读写。在crontab下,每天自动执行一次。
2、syslog2mysql.sh
该脚本是用于创建mysql的pipe管道,让syslog-ng可通过该管道写入mysql中。在crontab下,系统系统的时候自动运行。
3、reloadcache.php
该脚本的作用是,当有新的host加入syslog-ng后,更新mysql中的信息。在crontab下,每5分钟运行一次。
4、resetusers.sh
用于重置用户表,当忘记admin密码的时候,可运行它。重置后,管理员用户名和密码都是admin。
5、drop-old-tables.php
当php-syslog-ng运行一段时间后,由logrotate.php可能会产生大量的旧日志表。使用这个脚本,可删除具有相同前缀的表,例如logs_*等,可方便管理。
6、dbgen.pl
该脚本用于产生一些演示数据,在测试php-syslog-ng是否正常时可以运行,其会插入大量数据到mysql中。
因其使用perl编写,故需要使用Net::MySQL模块。
安装模块及运行:
# mkdir /usr/lib/perl5/site_perl/5.8.5/Net
# cp MySQL.pm /usr/lib/perl5/site_perl/5.8.5/Net/
# /var/www/html/php-syslog-ng/scripts/dbgen.pl
示例:
※注意:这个脚本只是演示而已,实际没什么用的。而官方提供的crontab文件里是每小时执行一次的,应把它删掉。
五、其他
1、不能显示图形
点击"Graph"的时候,报错:
原因是,新版的php-syslog-ng考虑到旧版字库版权的问题,使用了verdana.ttf字库。而当前系统目录该字库。
解决办法:
1)从Windows\Fonts目录中拷贝到上述的路径即可;
2)从下面下载,并放到上述目录下:
执行:
# mkdir -p /usr/share/fonts/corefonts
# cd /usr/share/fonts/corefonts/
# wget
# unzip verdana.ttf.zip
# rm -f verdana.ttf.zip
图例:
若您配置虚拟主机的时候,使用php-syslog-ng的根目录作为Web根目录,请小心scripts的安全问题。
应增加类似:
3、命令行执行php脚本的时候报错
报错信息如下:
原因是oci8.so(php和Oracle的接口)不能在未定义前执行,这里也不会使用到该模块。
所以,请修改
/etc/php.d/oci8.ini
,改为:
重启httpd服务即可。
◎若一定要使用该模块,可把执行命令的报错信息去掉,即改为:
# php /var/www/html/php-syslog-ng/scripts/reloadcache.php >> /var/log/php-syslog-ng/reloadcache.log 2>/dev/null
客户端配置
# vi /etc/syslog.conf
*.* @loghost
# cat /etc/hosts
192.168.169.1 loghost
# /etc/init.d/syslog restart 重启syslog.