Nov
14
[原]使用php-syslog-ng查看syslog-ng的信息
7、配置syslog-ng
其配置文件在:/etc/syslog-ng.conf,加入:
引用
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_sys);
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_sys);
destination(d_mysql);
};
或使用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
# service syslog-ng start
# chkconfig syslog off
# chkconfig --level 2345 syslog-ng on
从Web进入php-syslog-ng,应可正常使用:

四、配置计划任务
若使用php-syslog-ng对日志进行集中管理,其数据量可能是相当巨大的,必须考虑日志循环的问题。可以使用计划任务实现。
1、配置计划任务
使用crontab -e加入:
引用
# PHP-Syslog-NG
@daily php /var/www/html/php-syslog-ng/scripts/logrotate.php >> /var/log/php-syslog-ng/logrotate.log
@daily find /var/www/html/php-syslog-ng/html/jpcache/ -type f -atime 1 -exec rm -f '{}' ';'
@reboot /var/www/html/php-syslog-ng/scripts/syslog2mysql.sh >> /var/log/php-syslog-ng/mysql.log 2>&1
0,5,10,15,20,25,30,35,40,45,50,55 * * * * php /var/www/html/php-syslog-ng/scripts/reloadcache.php >> /var/log/php-syslog-ng/reloadcache.log
@daily php /var/www/html/php-syslog-ng/scripts/logrotate.php >> /var/log/php-syslog-ng/logrotate.log
@daily find /var/www/html/php-syslog-ng/html/jpcache/ -type f -atime 1 -exec rm -f '{}' ';'
@reboot /var/www/html/php-syslog-ng/scripts/syslog2mysql.sh >> /var/log/php-syslog-ng/mysql.log 2>&1
0,5,10,15,20,25,30,35,40,45,50,55 * * * * php /var/www/html/php-syslog-ng/scripts/reloadcache.php >> /var/log/php-syslog-ng/reloadcache.log
或确认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已经全部配置完成。后面讲解其他的一些脚本的功能。
warning: require_once(includes/html_header.php) [function.require-once]: failed to open stream: No such file or directory in /var/www/html/php-syslog-ng/html/includes/login.php on line 100
Fatal error: require_once() [function.require]: Failed opening required 'includes/html_header.php' (include_path='/usr/local/lib/php') in /var/www/html/php-syslog-ng/html/includes/login.php on line 100
怎么我安装了syslog-ng后我的514端口一直是打不开的阿?
謝謝你提供的解決方向,我已經完全解決相關問題,(原來是 udp 514 被其他人關掉了...)
雖然會出現奇奇怪怪的 host,但是基本上運作都很正常
太感謝!!
我確定"2.9.8k"這個版本運作2.5天後就會停止收集 syslog,這已經是我第二次遇到這個問題了。應該不是腳本的問題,因為在今天 11:30 分之前都還是正常運作,過了這個時間之後的 syslog 完全收不到,完全沒有變動任何軟硬體設定...
我用的 OS 版本是 CentOS 5.2,不知道您是否有遇到這種狀況。
還是說用舊版的 php-syslog-ng 就好呢? 真的蠻不好意思的,我實在找不到誰來問,只好一直麻煩您。若是方便的話是否可以跟您通 mail 呢?
我的 mail : weine814#gmail.com
謝謝您!
就我对php-syslog-ng的理解,它仅是一个syslog-ng的前端而已,就是给方便查看日志提供了一个Web界面,没有什么太深奥的东西的。按道理来说,即使完全停止httpd服务,也不应该影响syslog-ng收集其他日志的功能的。因为,日志都是写入mysql中了。
建议您不要管php-syslog-ng,而是去看mysql中收集日志的情况,再不行,就干脆暂时不要写入mysql,然后看本机日志中是否有其他机器的日志。这应该不难排查的。
有问题,可发邮件到这里给我:emos#linuxfly.org
我單獨執行過 @daily script,並沒有報錯。我功力實在不夠深不太會使用mysql,我只是到mysql 的目錄下檢查檔案,看起來都有正常被產生。
我檢查是否有正常收到其他主機的 syslog ,發現好像是都收不到。
我確認 udp 514 有開,各項daemons 正常運作。
後來我決定重來一次,我重裝了 OS、php-syslog-ng,一模一樣的環境,又可以正常運作了。我想可能是我前次安裝時又甚麼地方沒處理好吧!!
重點來了...我在網頁的右上角發現了一行文字 "The code you support today may turn out to be SkyNet tomorrow... " <---難道是被天網turn out 了嗎?? Oh!! my God ~~~該不會是要付費吧....
我的 php-syslog-ng 版本是 "2.9.8k" 最新 Release Version.
目前我先就目前狀況運作個一星期,若是發生同樣問題再向板主請教囉!!
一直打擾您真的是不好意思,先向您說聲謝謝,萬分感謝!!
可是用了三天後,就沒辦法收到 其他主機的syslog file,我檢查了各項 script 及 syslon-ng 、mysql daemons 都正常運作,但在 php-syslog-ng 首頁中host只能看到本機名稱,不知道是否有方法可以 debug.
希望您可以幫忙謝謝!!
若是的话,你可以误会了,php-syslog-ng实际上就是一个用php写的B/S界面而已,其数据来源自syslog-ng,其没有太多的分析功能的,更加没有监控。排除出来的信息,需要人工进行分析工作。
至于你提到的监控软件产生的日志,一般ftp等软件只会把部分日志写入系统日志中,大部分的日志都会根据自己的定义的格式写入某些文件(或增加sql模块,写入数据库中等)。
关于日志分析的工具,建议你看看logwatch、awstats、cacti等利用perl来分析、监控的软件,相信对你有帮助的。
yincaichina@163.com
还有就是如果用一台机器做log server. 使用syslogd接受远程主机日志, 使用log server上syslog-ng从/dev/log中读取数据写入数据库. 请问这种方式是否支持
syslog-ng作为服务端,只是syslog发过来的日志流。
我现在已全部导入mysql(有11台主机的日志),但不知如何设置轮转?
长此下去,用不了两个月,就要撑破我的硬盘;
drop-old-tables.php就是清空就日志表的脚本。