LAMP+logzilla2.9.9+syslog-ng实现集中日志管理(第二版)

刘天斯 , 2010/07/24 14:28 , Linux , 评论(67) , 阅读(40557) , Via 本站原创 大 | 中 | 小
一、前言
       为什么要引入第二版?由于 第一版是基于Logzilla3.0,作者在Logzilla3.0以后做了licensed限制,可以从作者回复邮件的内容得到证实[图1]。因此需要定期去更新license.txt来达到延长使用期限的目的,个人感觉比较麻烦,同时还有主机及日志数的限制,这也是整理第二版的原因,当然,你也可以通过以下途径获取免费、无限制的licensed,见 How to get a free, unlimited, license of LogZilla。但这不是本文所要讨论的话题:),第二版中本人采用logzilla2.9.9版来搭建一个免费、无限制的日志集中管理平台,功能上与3.0差异不大,好了,废话少说,我们开始吧!
[图1]

点击在新窗口中浏览此图片

平台截图
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片

二、平台初始化
部署LAMP平台(略)
引用

#yum install libdbi* libnet
#cpan Date::Calc Text::LevenshteinXS String::CRC32
#cpan -i Digest::SHA1
#cpan -i Net::MySQL

三、下载相关包
引用

#cd /home/install
#mkdir logzilla;cd logzilla
#wget http://www.balabit.com/downloads/files/eventlog/0.2/eventlog_0.2.9.tar.gz
#wget http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/3.0.3/setups/rhel-5-i386/syslog-ng-3.0.3-1.rhel5.i386.rpm

四、开始安装
引用

# cp eventlog_0.2.9.tar.gz /usr/src/redhat/SOURCES/
# tar zxvf  eventlog_0.2.9.tar.gz
# cd eventlog-0.2.9/
# rpmbuild --ba eventlog.spec.bb
# cd /usr/src/redhat/RPMS/x86_64
# rpm -Uvh libevtlog*

#cd /home/install/logzilla
#rpm -Uvh syslog-ng-3.0.3-1.rhel5.i386.rpm

五、安装logzilla
引用

#cd /www/webroot/
#wget http://php-syslog-ng.googlecode.com/files/logzilla_v2.9.9o.tgz
#tar xzvf logzilla_v2.9.9o.tgz
#mkdir -p /var/log/logzilla

六、配置Mysql
引用

# mysql -u -p
mysql> SELECT @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| OFF               |
+-------------------+
1 row in set (0.00 sec)


低于Mysql5.1版本会提示如下,如不打算升级到logzilla3.0,没有关系,可以略过此步骤。
mysql> SELECT @@event_scheduler;
ERROR 1193 (HY000): Unknown system variable 'event_scheduler'

激活event_scheduler
引用

mysql> SET GLOBAL event_scheduler = 1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| ON                |
+-------------------+
1 row in set (0.00 sec)

mysql> quit;

七、修改Syslog-ng配置
#vi /opt/syslog-ng/etc/syslog-ng.conf
  1. @version: 3.0  
  2. source s_local {  
  3. internal();  
  4. unix-stream("/dev/log");  
  5. file("/proc/kmsg" program_override("kernel: "));  
  6. };  
  7. source s_local {  
  8.         udp(ip(0.0.0.0) port(514));  
  9. };  
  10.   
  11. # destinations  
  12. destination d_messages { file("/var/log/messages"); };  
  13.   
  14.   
  15. ###########################################################################################  
  16. # Clay's LogZilla config below  
  17. ###########################################################################################  
  18. # Last updated on 2010-06-15  
  19. ###########################################################################################  
  20. options {  
  21.       long_hostnames(off);  
  22.       # doesn't actually help on Solaris, log(3) truncates at 1024 chars  
  23.       log_msg_size(8192);  
  24.       # buffer just a little for performance  
  25.       # sync(1); <- Deprecated - use flush_lines() instead  
  26.       flush_lines(1);  
  27.       # memory is cheap, buffer messages unable to write (like to loghost)  
  28.       log_fifo_size(16384);  
  29.       # Hosts we don't want syslog from 
  30.       #bad_hostname("^(ctld.|cmd|tmd|last)$"); 
  31.       # The time to wait before a dead connection is reestablished (seconds) 
  32.       time_reopen(10); 
  33.       #Use DNS so that our good names are used, not hostnames 
  34.       use_dns(yes); 
  35.       dns_cache(yes); 
  36.       #Use the whole DNS name 
  37.       use_fqdn(yes); 
  38.       keep_hostname(yes); 
  39.       chain_hostnames(no); 
  40.       #Read permission for everyone 
  41.       perm(0644); 
  42.       # The default action of syslog-ng 1.6.0 is to log a STATS line 
  43.       # to the file every 10 minutes.  That's pretty ugly after a while.  
  44.       # Change it to every 12 hours so you get a nice daily update of  
  45.       # # how many messages syslog-ng missed (0).  
  46.       # stats(43200);  
  47. };  
  48.   
  49. destination d_logzilla {  
  50.    program("/www/webroot/php-syslog-ng/scripts/db_insert.pl"  
  51.    template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")  
  52.    template_escape(yes)  
  53.    );  
  54. };  
  55.   
  56. # Tell syslog-ng to log to our new destination   
  57. log {  
  58.    source(s_local);  
  59.       destination(d_logzilla);  
  60. };  

八、修改apache配置
#vi httpd.conf
  1. <VirtualHost *:80>  
  2.     ServerAdmin liutiansi@gmail.com  
  3.     DocumentRoot /www/webroot/php-syslog-ng/html/  
  4.     ServerName syslog.com.cn  
  5.     ErrorLog logs/syslog.com.cn-error_log  
  6.     CustomLog logs/syslog.com.cn-access_log common  
  7. # LogZilla  
  8. Alias /logs "/www/webroot/php-syslog-ng/html/"  
  9. <Directory "/www/webroot/php-syslog-ng/html/">  
  10.     Options Indexes MultiViews FollowSymLinks  
  11.     AllowOverride All  
  12.         Order allow,deny  
  13.         Allow from all  
  14. </Directory>  
  15. </VirtualHost>  

重启apache服务:/etc/init.d/apache2 restart

九、修改php.ini
Vi /usr/local/php/lib/php.ini
  1. memory_limit = 128M  
  2. max_execution_time = 300  
  3. /etc/init.d/apache2 restart  

十、配置日志分隔
cp /www/webroot/php-syslog-ng/scripts/contrib/system_configs/logrotate.d /etc/logrotate.d/logzilla

十一、添加作业
引用

@daily /usr/local/php/bin/php /www/webroot/php-syslog-ng/scripts/logrotate.php >> /var/log/php-syslog-ng/logrotate.log
@daily /usr/bin/find /www/webroot/php-syslog-ng/html/jpcache/ -atime 1 -exec rm -f '{}' ';'
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/php/bin/php /www/webroot/php-syslog-ng/scripts/reloadcache.php >> /var/log/php-syslog-ng/reloadcache.log

十二、开始平台安装
# /etc/init.d/syslog-ng restart
http://192.168.0.100/logs/来进行安装
步骤如下:
点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

十三、替换脚本路径
引用

cd /www/wewroot/php-syslog-ng/scripts
./fixpaths.sh

或者直接用sed来修改
引用

#sed -i -e "{ s@/path_to_logzilla@/www/webroot/php-syslog-ng@}" *.*

#/etc/init.d/syslog-ng restart

十四、客户端配置
在最后添加以下,其中syslog.admin.com.cn为主机域名,也可以直接用IP代替。
#vi /etc/syslog.conf
*.emerg;*.err;*.warning         @syslog.admin.com.cn
#/etc/init.d/syslog restart

测试:logger -p local4.err "This is a local.err test message."

十五、后续问题
问题一、点击[Graph]时会提示“JpGraph Error Font file
"/usr/share/fonts/truetype/msttcorefonts/verdana.ttf" is not readable or does not exist.”
解决方法:
mkdir -p /usr/share/fonts/truetype/msttcorefonts/
上传windows XP/2003/vista/下的字体文件verdana.ttf到/usr/share/fonts/truetype/msttcorefonts/即可。

问题二、logs表无数据,运行/www/webroot/php-syslog-ng/scripts/contrib/dbgen/dbgen.pl
提示:Cannot determine peer address at /usr/lib/perl5/site_perl/5.8.5/Net/MySQL.pm line 277

解决方法:
1、是logzilla2.9.9安装时一个bug,新建的mysql的syslogadmin、sysloguser用户权限没有成功赋予,手工添加上就OK了,感谢【杭州】FIGO提供的故障案例。
2、如第1步不成功,尝试修改/www/webroot/php-syslog-ng/html/config/config.php文件mysql主机地址localhost为127.0.0.1。

问题三、搜索缓存图表只显示两天的数据,最近三天没有数据?
解决方法:
由于search_cache表采用的是MEMORY存储引擎,有大小的限制,修改一下/etc/my.cnf,在[MYSQLD]添加:
tmp_table_size=1G
max_heap_table_size = 1G
再重启mysql就可以了。
效果图:
点击在新窗口中浏览此图片

问题四、不能显示日志当中带有"<"、">"的问题,如思科系统的日志。
感谢[常州]老高提供的故障案例。
解决方法:
在tailresult.php和regularresult.php中查找
  1. if (CISCO_TAG_PARSE )   
  2.    {      
  3.         $row['msg'] = preg_replace('/\s:/'':'$row['msg']);  
  4.         $row['msg'] = preg_replace('/.*(%.*?:.*)/''$1'$row['msg']);  
  5.     }  

在里面添加
  1. $row['msg'] = preg_replace('/</'' '$row['msg']);   
  2. $row['msg'] = preg_replace('/>/'' '$row['msg']);   

即可。

问题五、客户端日志无法入库。
感谢[北京]永远飞扬提供的故障案例。
系统环境:
CentOS release 5.5 (Final) i386 2.6.18-194.el5
LAMP (系统rpm默认安装)
Mysql:5.0.77
Php:PHP 5.1.6
Apache:2.2.3

原因:
perl for mysql驱动异常,直接采用bin/mysql+insert sql语句入库。

解决方法:
#vi /opt/syslog-ng/etc/syslog-ng.conf
  1. @version: 3.0  
  2. #Default configuration file for syslog-ng.  
  3. #  
  4. # For a description of syslog-ng configuration file directives, please read  
  5. # the syslog-ng Administrator?ˉs guide at:  
  6. #  
  7. # http://www.balabit.com/dl/html/syslog-ng-admin-guide_en.html/bk01-toc.html  
  8. #  
  9. options {  
  10. # Number of syslog lines stored in memory before being written to files  
  11. flush_lines (1);   
  12. log_fifo_size (2048);  
  13. create_dirs (yes);  
  14. perm (0640);  
  15. dir_perm (0750);  
  16. keep_hostname (yes);  
  17.           time_reopen (10);  
  18.           log_fifo_size (1024);  
  19.           long_hostnames (off);  
  20.           use_dns (no);  
  21.           use_fqdn (no);  
  22.          owner(root);  
  23.           group(root);  
  24.          perm(0640);  
  25. };   
  26. source s_network_1 {  
  27. udp(ip(0.0.0.0) port(514));  
  28. };  
  29. destination d_network_1 {  
  30. file("/var/log/syslog-ng/network/$YEAR.$MONTH.$DAY/$HOST/$FACILITY.log");  
  31. };  
  32. # Define the destination "d_network_1B" log directory  
  33. destination d_network_1B {  
  34. file ("/var/log/syslog-ng/network/all/network.log");  
  35. };  
  36. log {  
  37. source(s_network_1);  
  38. destination(d_network_1);  
  39. };  
  40. log {  
  41. source(s_network_1);  
  42. destination(d_network_1B);  
  43. };  
  44. destination d_logzilla {  
  45. program("/var/www/html/php-syslog-ng/scripts/db_insert.pl"   
  46. template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n"));  
  47. };#  
  48. log {  
  49. source(s_network_1);  
  50. destination(d_logzilla);  
  51. };  
  52. source localhost_all {  
  53. internal();  
  54. unix-stream("/dev/log");  
  55. file("/proc/kmsg" program_override("kernel"));  
  56. };  
  57. destination localhostlog {  
  58. file ("/var/log/syslog-ng/$HOST/$YEAR-$MONTH/$DAY" create_dirs(yes));  
  59. };  
  60. log {  
  61. source(localhost_all);  
  62. destination(localhostlog);  
  63. };  
  64. destination local_logzilla {  
  65. program("/var/www/html/php-syslog-ng/scripts/db_insert.pl"   
  66. template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n"));  
  67. };  
  68. destination d_mysql {  
  69.     program("/usr/bin/mysql -usyslogadmin -psyslogadmin syslog"  
  70.     template("INSERT INTO logs (host, facility, priority, level, tag, datetime, program, msg, seq) 
  71.     VALUES ( '$HOST', '$FACILITY', '$PRIORITY', '$LEVEL', '$TAG', '$YEAR-$MONTH-$DAY $HOUR:$MIN:$SEC', '$PROGRAM', '$MSG', '$SEQ' );\n")  
  72.     template-escape(yes));  
  73.     };  
  74. log {  
  75. source(localhost_all);  
  76. destination(local_logzilla);  
  77. };  

*注:配置中的相关参数需根据个人实际环境进行修改。


全世界都在找logzilla_v2.9.9o.tgz包,打包线上的包放上来(修复原先一些小bug)
下载文件 (已下载 1021 次)


参考文献: http://nms.gdd.net/index.php/LogZilla_Installation_Guide

如大家有什么疑问或感兴趣的话题可以通过weibo与我交流: http://t.qq.com/yorkoliu
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值