Nov 14

[原]使用php-syslog-ng查看syslog-ng的信息 晴

linuxing , 13:13 , 网络服务 » 性能监控 , 评论(26) , 引用(0) , 阅读(158641) , Via 本站原创 | |
   正如前面提到的,syslog-ng是可用于替代系统原来的sysklog日志服务器。其配置简单,并且支持多种不同的日志目的导向方式,包括mysql数据库。以下再配合php-syslog-ng套件,即可从浏览器实现日志的观察和过滤,相当方便。
演示环境:http://syslog.linuxfly.org
用户名和密码都是:demo
一、原理
要实现用php-syslog-ng查看syslog-ng的日志信息,需满足以下条件:
引用
1、配置syslog-ng,把指定的log信息insert到mysql数据库中;
2、配置apache和php,让php-syslog-ng可以从web浏览器使用。

二、安装新版syslog-ng套件
为配合php-syslog-ng,并修复一些已经的Bug。建议升级syslog-ng套件。
系统平台:
红旗DC Server 5.0 for x86
1、获取源码包
可以从官方网站获取源码包。但我一直都建议尽量用rpm管理系统中的软件的,所以,我使用src.rpm咯。
Douglas E. Warner在www.silfreed.net提供了rhel 4的2.0.4版本rpm下载,和fedora的2.0.5下载。
我只是修改了其中一些配置文件,以适合红旗DC Server 5.0的情况。
源码包:

(其中,eventlog套件是编译syslog-ng的时候需要的)

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包。虽然红旗上默认已经安装,但编译前请再次确认。


3、更新包下载
下面是我已经编译好的包:

三、安装php-syslog-ng
sourceforge地址:点击
官方网站:点击
最新版本下载地址:点击
本地下载:

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中的scripts脚本会引用很多html中的配置,所以,请务必把php-syslog-ng中的html和scripts目录放在同一根目录下。否则,需手工修改源码。

2、修改php环境
为配合php-syslog-ng对php环境的要求,请修改/etc/php.in中的内容为:
引用
;display_errors = Off
display_errors = On

; magic_quotes_gpc = Off
magic_quotes_gpc = On

; memory_limit = 8M
memory_limit = 256M  

; max_execution_time = 30
max_execution_time = 90

上述不是必须的,但作为建议选项。另外,新版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


4、加入apache虚拟主机
这部分,请根据您的apache实际情况操作。以我的系统为例,所有虚拟主机配置文件都放在/etc/httpd/conf目录中,以vhost开头的配置文件内。所以,在该目录加入文件内容:
# cat vhost_php-syslog-ng.conf
引用
# PHP-SYSLOG-NG
<VirtualHost *:80>
   ServerName syslog.linuxfly.org
   ServerAdmin linuxing@linuxfly.org

   DocumentRoot /var/www/html/php-syslog-ng/html
   <Directory />
       Options FollowSymLinks
       AllowOverride All
   </Directory>
   <Directory /var/www/html/php-syslog-ng/html>
       # pcw No directory listings
       # Options Indexes FollowSymLinks MultiViews
       Options -Indexes FollowSymLinks MultiViews
       AllowOverride All
       Order allow,deny
       allow from all
   </Directory>
   <Directory /var/www/html/php-syslog-ng/html/config>
       Deny from all
   </Directory>

   ErrorLog /var/log/httpd/php-syslog-ng/error.log

   # Possible values include: debug, info, notice, warn, error, crit,
   # alert, emerg.
   LogLevel warn

   CustomLog /var/log/httpd/php-syslog-ng/access.log combined
   ServerSignature On

</VirtualHost>

然后,重启apache:
# service httpd restart
内文分页: [1] [2] [3] [4]
mcg
2013/04/07 16:58
楼主 给发我一个php-syslog-ng.tar.gz的包吗,现在收费了 找不到 而且我下的一个 没有syslog2mysql.sh 这个脚本  谢谢
mcg840107@126.com
linuxing 回复于 2013/04/09 17:18
上面的链接失效了(可能之前在同步数据时丢失),已经补回去,可以下载啦。文件有8M多,发邮件不方便哦。
inmystory Email
2010/09/14 13:39
请问博主syslog-ng有没有强大到可以发送消息到ActiveMQ上呢?ActiveMQ通过TCP端口61616接收消息,但是需要额外的定义队列名等,不知道syslog-ng中有没有功能可以实现这个设置的?
linuxing 回复于 2010/09/15 13:06
不好意思,我没接触过ActiveMQ。syslog-ng是支持通过TCP向远端发送数据的,而大部分(我所了解的语言都有定义接收syslog协议的函数),这样,应该不难实现您的要求。但有没有现成的方法,或如何实现,那估计就要看API咯。
yue
2010/05/25 16:34
请问博主: php-syslog-ng 的admin 登陆密码搞丢了,怎么能找回呢 ?
linuxing 回复于 2010/05/25 18:18
查查后台mysql数据库就行啦。
hyh
2009/11/18 18:35
感谢版主这么快的回复~~~
options { stats_freq (0);
          flush_lines (1);
          keep_hostname (yes);
          time_reopen (10);
          log_fifo_size (1024);
          long_hostnames (off);
          use_dns (no);
          use_fqdn (no);
          create_dirs (yes);
          owner(root);
          group(root);
          perm(0640);
          dir_perm(0755);
        };
source s_sys {
        file ("/proc/kmsg"  log_prefix("kernel: "));
        unix-stream ("/dev/log");
        internal();
        udp(ip(0.0.0.0) port(514));
};
这个是我的syslog-ng.conf中的options和source的设置,然后增加了你的那个配置内容。还望版主能够指点一下~~谢谢阿
hyh
2009/11/18 14:33
版主,你好~~
我的linux版本是FC11的,然后使用yum安装好了syslog-ng和php-syslog-ng,一切都通过了。但是在web界面中没有数据,显示There appear to be no hosts in the Database yet,You can generate fake ones using scripts/dbgen.pl
查看数据库中的syslog,select * from logs,显示是空的。应该是syslog-ng没有将日志导入mysql吧?但我确实是在syslog-ng.conf中按照你的文档加入了数据库的配置。配置上唯一跟您有出入的就是6.配置脚本,他显示的是test是个目录。
还望版主指点指点。
php-syslog-ng的版本是2.9.8的~~
linuxing 回复于 2009/11/18 16:24
6中不是什么问题,他只是用perl执行了一个正规表达式的替换工作而已。关键问题在mysql中没有数据。这个估计与过滤器设定、mysql pipe有关,建议再仔细看看吧。
toyoget Email
2009/08/20 17:59
板主您好,我已建置好LOG SERVER,但是存在MYSQL上的資料如all_logs及logs2009xxxx只會儲存30天的Data,若我想儲存更久的Data,應該在哪裡設定呢?可否請版主指點迷津呢,謝謝
P.S.我在crontab上並沒有設定清除日誌的drop-old-tables.php,真令人不解阿...
冷云
2009/08/17 11:45
destination f_mysql {
        sql(type(mysql)
        host("127.0.0.1") username("root") password("")
        database("filter_logs")
        table("messages_${R_YEAR}${R_MONTH}${R_DAY}")
        columns("datetime", "facility", "level", "host", "program", "pid", "message")
        values("$R_DATE", "$FACILITY", "$LEVEL", "$HOST", "$PROGRAM", "$PID", "$MSGONLY")
        indexes("datetime", "host", "program", "pid", "message"));
};

我手功插入了2000多W条记录,但是数据库里只插入了400多W条,有没有可能是插入太快了,而syslog-ng来不及写入mysql里?
linuxing 回复于 2009/08/18 00:10
是否有些记录是完全相同的?如果是的,syslog-ng会自动归类,把频率很高,但重复的日志信息归类在一个信息中,仔细看看日志的信息应该能看到的。
你提到的2000W记录,在messages中也是2000W吗?messages中的数量应该与mysql中的相同。我觉得不会是插入太快的问题,但有可能存在缓存、UDP丢失等问题。
小程序员
2009/08/10 16:51
博主你好!
最近要装一个syslog-ng服务。
目的很简单,就是把服务器的日志文件,放入到MySQL数据库中就可以了。

然后自己写java代码和jsp页面显示出来就可以了。

但是,由于本人能力有限,弄了两个星期都没有弄成功啊。

您能不能简单的给指导一下,我应该怎么做啊。

只要把服务器的日志文件存入数据库中就可以了。

谢谢您啊。
linuxing 回复于 2009/08/11 22:55
在本文的第三页就有该介绍,定义一个通道,把从syslog-ng来的信息直接导入mysql中。
xu
2009/07/15 15:25
可是windows日志显示的是乱码,怎么解决啊?
linuxing 回复于 2009/07/16 11:13
看看windows发过来的日志是什么编码的?需要统一为一种编码。
YueMin
2009/06/17 15:11
没想到楼主这么快就回复了,感激感激...

之前问到的问题,我没管它了,直接在 login.php中调用html_header.php的部分将其注释掉。能够出现其plain的登陆页面了,但用admin登陆时,返回的消息却是:
Query failed: Table 'syslog.test_users' doesn't exist

没法,又得请教楼主了。
linuxing 回复于 2009/06/17 17:37
看看mysql数据库中是否已经创建了对应的库和表?
分页: 1/3 第一页 1 2 3 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]