概述:
此分享是关于海量日志分析系统实践的汇总
汇总点:
基于MySql;
分析指标有,Hits、带宽、UIP(独立用户IP)、下载速度、下载时长、响应时间、受访URL、受访域名、来路URL、来路域名、全国用户分布统计、运营商分布统计、受访文件大小、文件类型、Squid命中率、请求响应类型、异常用户统计;
海量数据,写多读少;
节点包括:A(Agent) 、B(Bee) 、D(Data) 、M(Manger) 、R(Relay) ;
采集节点利用Rsync实现推送日志到B点;
运算节点根据需求分析日志并推送到D点;
R节点保障数据传输的速度及效率,减少网络问题导致的数据阻塞及不完整性;
D节点负责将接收到的sql文本入库;
表细分汇总包括m_表、h_表、d_表等;
展示节点基于web数据库访问层基于Amoeba;
管理节点掌握各大节点的系统运行状况,资源使用情况;
D节点中采用热数据来缓解DB的压力;
在MyISAM表中尽量使用定长类型;
将IP字段存储为整形;
使用merge表,对于过期的只读表进行myisampack,使用enum 使PROCEDURE ANALYSE() ,根据业务需求将产品线及时间建立联合索引;
Mysql架构优化包括增加节点、分库分表、将m,h,d表的索引文件及数据文件分布到不同磁盘、将数据库指向不同的磁盘、禁止系统更新文件的atime属性;
使用tmpfs作cache磁盘(ramdisk);
采用infobright版;
基于mysqlnd做性能测试;
基于Memcache多级缓存;
技术:
Gearman 用于分布式节点的管理;
Memcached 缓存数据;
Amoeba 展示层数据库代理;
INFOBRIGHT的ICE版;
更多详情参见附件