[size=xx-large]方案图[/size]
[img]http://dl2.iteye.com/upload/attachment/0093/6723/5f0117cb-b4e6-3508-8aa8-ed11a71f6925.jpg[/img]
[size=xx-large]模块[/size]
[b]前端http日志接口[/b]
分为single log,array logs;
修改nginx配置,支持超长URL的提交;
日志采用logrotate切割,结合crontab实现分钟切割;
[b]收集器[/b]
主要采用flume
与nginx同机器部署agent,收集到collector,最终保存到hadoop1中;
主要采用rsync
在前端nginx服务器上开通rsync服务器端,具体开通办法可以参考:系统技术文档0005:部署rsync服务器,然后在hadoop的集群机器上将日志收集到本地,收集完成后删除前端日志服务器上相应的文件。Rsync收集命令如下:
rsync -azu --remove-sent-files $IP::NGINXLOG/logcenter.$THISHOUR*.log $MYPATH
收集之后把日志上传到hadoop集群。收集器每小时的第5分钟运行,收集上个小时生成的日志。日志上传到hadoop集群后调用解析器,解析日志。
收集器脚本:lcrsync.sh
[b]解析器[/b]
均实现map/reduce接口
格式解析器:从hadoop1读取消息,结合配置数据库,将消息解析(csv)并保存到hadoop1;负责拷贝解析后的日志从hadoop1到hadoop2
拷贝有3中方案:
Hadoop distcp <srcurl> <desturl> copy file or directories recursively
flume收取
rsync
Hadoop2的目录/logcenter/dest
内容解析器:将解析后的日志格式(csv),插入到hive中
[b]配置数据库[/b]
主要保存日志格式相关信息
[b]集群管理器(待定)[/b]
使用zookeeper实现
监控收解析器的工作状态
解析器集群锁
[b]日志中心管理系统[/b]
提供配置数据库的UI
结合日志配置提供日志开发文档
监控相关UI
[size=xx-large]配置数据库设计[/size]
具体字段及含义,请直接参照日志中心数据库SQL脚本
表
log_system:系统表
log_info:日志表
log_parameter:参数表
log_format:格式表
log_record:记录表
具体SQL脚本,请见附件
E-R图,如下所示:
[img]http://dl2.iteye.com/upload/attachment/0093/6743/25e321da-6c77-3e39-8768-2204b4dfd529.jpg[/img]
[size=xx-large]接口设计[/size]
[b]single log[/b]
[img]http://dl2.iteye.com/upload/attachment/0093/6751/d91af677-248f-331b-958e-3ae23e6e55ff.jpg[/img]
[b]array logs[/b]
[img]http://dl2.iteye.com/upload/attachment/0093/6753/124b8bd3-d557-3f4d-af07-7e973170b909.jpg[/img]
[b]Transfer logs[/b]
[img]http://dl2.iteye.com/upload/attachment/0093/6757/03aefd43-d553-3b9d-8644-cbe97f991340.jpg[/img]
[size=xx-large]关于准实时收集方案[/size]
Hadoop1为存放原始日志和CSV日志的集群
Hadoop2是用于hive分析的集群(运行hive会启动很多task和job)
对于准实时收集日志的方案。目前经过考虑有以下几种办法:
Flume collector中开发插件,边收集边解析,直接将结果存入到hadoop2中
开发tomcat,直接受理http请求,生成CSV文件,flume agent来收集并放入hadoop2中
开发nginx插件,解析请求生成CSV放入日志文件中,flume agent来收集并放入hadoop2
[img]http://dl2.iteye.com/upload/attachment/0093/6723/5f0117cb-b4e6-3508-8aa8-ed11a71f6925.jpg[/img]
[size=xx-large]模块[/size]
[b]前端http日志接口[/b]
分为single log,array logs;
修改nginx配置,支持超长URL的提交;
日志采用logrotate切割,结合crontab实现分钟切割;
[b]收集器[/b]
主要采用flume
与nginx同机器部署agent,收集到collector,最终保存到hadoop1中;
主要采用rsync
在前端nginx服务器上开通rsync服务器端,具体开通办法可以参考:系统技术文档0005:部署rsync服务器,然后在hadoop的集群机器上将日志收集到本地,收集完成后删除前端日志服务器上相应的文件。Rsync收集命令如下:
rsync -azu --remove-sent-files $IP::NGINXLOG/logcenter.$THISHOUR*.log $MYPATH
收集之后把日志上传到hadoop集群。收集器每小时的第5分钟运行,收集上个小时生成的日志。日志上传到hadoop集群后调用解析器,解析日志。
收集器脚本:lcrsync.sh
[b]解析器[/b]
均实现map/reduce接口
格式解析器:从hadoop1读取消息,结合配置数据库,将消息解析(csv)并保存到hadoop1;负责拷贝解析后的日志从hadoop1到hadoop2
拷贝有3中方案:
Hadoop distcp <srcurl> <desturl> copy file or directories recursively
flume收取
rsync
Hadoop2的目录/logcenter/dest
内容解析器:将解析后的日志格式(csv),插入到hive中
[b]配置数据库[/b]
主要保存日志格式相关信息
[b]集群管理器(待定)[/b]
使用zookeeper实现
监控收解析器的工作状态
解析器集群锁
[b]日志中心管理系统[/b]
提供配置数据库的UI
结合日志配置提供日志开发文档
监控相关UI
[size=xx-large]配置数据库设计[/size]
具体字段及含义,请直接参照日志中心数据库SQL脚本
表
log_system:系统表
log_info:日志表
log_parameter:参数表
log_format:格式表
log_record:记录表
具体SQL脚本,请见附件
E-R图,如下所示:
[img]http://dl2.iteye.com/upload/attachment/0093/6743/25e321da-6c77-3e39-8768-2204b4dfd529.jpg[/img]
[size=xx-large]接口设计[/size]
[b]single log[/b]
[img]http://dl2.iteye.com/upload/attachment/0093/6751/d91af677-248f-331b-958e-3ae23e6e55ff.jpg[/img]
[b]array logs[/b]
[img]http://dl2.iteye.com/upload/attachment/0093/6753/124b8bd3-d557-3f4d-af07-7e973170b909.jpg[/img]
[b]Transfer logs[/b]
[img]http://dl2.iteye.com/upload/attachment/0093/6757/03aefd43-d553-3b9d-8644-cbe97f991340.jpg[/img]
[size=xx-large]关于准实时收集方案[/size]
Hadoop1为存放原始日志和CSV日志的集群
Hadoop2是用于hive分析的集群(运行hive会启动很多task和job)
对于准实时收集日志的方案。目前经过考虑有以下几种办法:
Flume collector中开发插件,边收集边解析,直接将结果存入到hadoop2中
开发tomcat,直接受理http请求,生成CSV文件,flume agent来收集并放入hadoop2中
开发nginx插件,解析请求生成CSV放入日志文件中,flume agent来收集并放入hadoop2