PPTVLB日志实时分析平台课件_第1页
PPTVLB日志实时分析平台课件_第2页
PPTVLB日志实时分析平台课件_第3页
PPTVLB日志实时分析平台课件_第4页
PPTVLB日志实时分析平台课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AgendaPPTV LB日志实时分析系统介绍实际面临的问题解决方案系统部署系统实现Fluentd(td-agent)MongoDBPython Script(PyMongo module)Zabbix 应用实例Nginx return code 4xx 5xx 监控Nginx响应时间监控告警邮件自动分析程序LB日志实时分析与自动Release平台的集成实际面临的问题PPTV采用Nginx+Keepalived的方式构建Load Balancer,共有约40台LB server,每台承载10-50个域名的流量,我们需要精确的把握所有域名的健康状态(返回码是否正常,4xx/5xx率),及响应时间

2、变化趋势;能够准实时的发现入侵行为;难点:日志量大 每台LB每天都有几百GB日志(压缩前)日志分散不易进行统一分析难以添加有效监控解决方案(一)awk+grep+bash+gnuplot最方便的一招,比较灵活,计算准确;但实际使用不方便,看一个域名的日志需要登陆好几台LBE.g. 统计非200的top return codeawk if ($9 /0-9*$/ & $9 != 200 & $9 ! /3/) code$9+END for ( i in code ) print i codei|sort -k2 nr使用gnuplot对统计结果绘图cut d f1-4 log.txt | uni

3、q c | (echo “plot “-” using 2:1 with lines”;cat)|gnuplot解决方案(二)Python+zabbix每台LB均部署python日志分析脚本,通过zabbix调度,每隔五分钟对前五分钟生产的日志文件进行分析,保留分析结果;Zabbix负责绘图和告警;主要两个缺点:1)性能瓶颈,日志分析占用大量LB CPU资源2)不够灵活,日志分析局限于单台LB解决方案(三)Fluentd+Mongodb+Python+zabbixFluentd实时收集LB日志,JSON化,存入中央MongodbPython程序查询Mongodb数据进行实时计算;计算结果存入z

4、abbix;zabbix负责告警及图形展现P.S. Thats what we want!Fluentd/Mongodb架构图Fluentd介绍开源日志收集工具 /LOG everything as JSON!JSON:Schema-free, add/remove field from logs at anytime原始日志:“2012-10-01 host1 myapp: message size=1000 user=xyz”JSON:2012-10-01 myapp.message “hostname”: ”host1”,“size”: 1000,“user”: “xyz”Fluentd

5、/Mongodb数据流图Fluentd plugin说明(1)在不使用plugin的情况下Fluentd仅仅是将日志输入转化为JSON格式输出的工具;各类plugin极大拓展了Fluentd的功能Fluentd plugin有如下三种:Input plugin 定义日志来源标准化,输入的格式Buffer plugin 定义fluentd缓存的配置以实现可靠性Output Plugin 定义输出的格式及目的地,可以是文件,网络,数据库,etcFluentd plugin说明(2)Fluentd Input Pluginhttp让fluentd从http client获取数据tailtail是最常

6、用的input plugin; type tail path /var/log/httpd-access.log #tail监听的文件地址tag apache.access #每个输入需要一个特定标签以区别format apache|syslog|自定义正则 #format可以灵活自定义 foward将其他fluentd/fluent-cat命令的输出作为该fluentd的输入;exec通过执行外部命令,以命令执行的结果作为fluentd的输入;Fluentd plugin说明(3)Fluentd Output PluginOuput Plugin用于存储Fluentd收集来的数据;目前有很多

7、开源的plugin,如:fluentd-flume,fluentd-splunk,fluentd-cassandra,fluentd-scribe,fluentd-mongodbfluent-plugin-mongo 0.6.10 Output plugin中最完美的当属mongodb plugin,因为Fluentd/Mongodb都以JSON为基础;mongodb良好的插入查询性能可以顶住海量日志实时分析的压力;mongodb的capped collection很好的解决了日志定量轮转的问题MONGODB部署每个机房部署一台mongodb server,用于收集该机房全部LB的日志每个mo

8、ngodb部署多个instance,每个instance对应一台LB server建立多个collection,每个collection保存一个域名的日志信息一定要使用capped collection!MONGODB配置port = 270XXdbpath = /home/mongodb/node270 xxlogpath = /home/mongodb/node270 xx.logsyncdelay = 10 #这个设置10秒左右,将IO压力平均化,避免sync时影响查询性能maxConns = 20000oplogSize = 1024directoryperdb = onlogappe

9、nd = onjournal = offfork = onnohttpinterface = onFluentd部署每台LB上均需安装一个Fluentd agent;使用TreasureData公司yum源上提供的td-agent rpm包安装即可;启动方法 /etc/init.d/td-agent start关键配置/etc/td-agent/td-agent.conf日志文件 /var/log/td-agent/td-agent.logPPTV Fluentd Input配置 type tail path /home/logs/nginx/aplus-access.log pos_file

10、 /var/log/td-agent/tmp/.pos format /(? *) (? *) - ( *) ( *) (?*) (? *) (? *) (*) (*) (*) (?*) (?,*)* (?,*)* (?*)$/ tag .accessPPTV Fluentd Output配置 type mongo database LB_hostname collection .access host mongodb_host port mongodb_port capped capped_size 180m #确保能够保留最近1小时该域名的日志 ignore_invalid_record

11、true buffer_type memory #使用内存作为buffer存储方式 buffer_chunk_limit 1M buffer_queue_limit 15 retry_limit 10 retry_wait 1s flush_interval 1s #刷新频率为1s,基本做到实时PPTV日志样例原始日志:4 999. - 05/Nov/2012:15:42:38 +0800 GET /recommend_pop/?_=1352101423806 HTTP/1.0 200 34 /show/MLibyMJjibbqyJB28.html Mozilla/4.0 (compatibl

12、e; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C) 01, 0.012 4:80 200 0.012“ MONGODB中的日志: _id : ObjectId(5097755c31d87b09f8046f1f), ip : 4, domain : 999., url : GET /recommend_pop/?_=1352101423806 HTTP/1.0, “cod

13、e” : “200”, #返回码 bsize : “34, #bodysize “restime” : “0.012”, #后端服务响应时间 “backend” : “4:80”, #后端服务地址 “bcode” : “200”, #后端服务返回码 “nginxtime” : “0.012”, #nginx响应时间 time : ISODate(2012-11-05T15:42:38Z)PPTV LB日志分析逻辑(1)为LB日志自动生成fluentd配置文件:对某台/log/nginx/*.access.log和*.error.log:根据LB所在机房分配后端mongodb地址/端口,根据历史

14、日志大小分配capped collection size,根据LB机器名分配mongodb database_name,根据域名确定mongodb collection name.PPTV LB日志分析逻辑(2)保存域名-LB-后端主机的对应关系,并定期更新(parse nginx配置文件) db.domain_host_info.find(domain:) _id : ObjectId(5096bc7b19859831d6000002), domain : , host : “lb1, backend : “host1 _id : ObjectId(5096bc7b19859831d6000

15、003), domain : , host : lb1, backend : “host2 _id : ObjectId(5096bc7b19859831d6000004), domain : , host : “lb2, backend : “host3 _id : ObjectId(5096bc7b19859831d6000005), domain : , host : “lb2, backend : “host4 PPTV LB日志分析逻辑(3)每五分钟对前五分钟mongodb收集到的日志基于域名进行汇总计算(python/pymongo),得出结果存入mongodb中的lb_detai

16、l表: db.lb_detail.findOne() _id : ObjectId(509434522573b0625d000002), “domain” : “”, #分析的域名 “ng1_count” : 0, #nginx请求时间超过1秒个数 “be1_count” : 0, #backend后端响应时间超过1秒个数 “total_count” : 2703, # 过去5分钟该域名的请求总数 “backtime_total” : 6.71, # backend后端响应时间总和 “bodysize_total” : 124100, #bodysize总和 “xx4_count” : 2,

17、#4xx请求个数 time : ISODate(2012-11-03T05:00:02.634Z), “ng3_count” : 0, #nginx请求总时间大于3秒的请求个数 “c200_count” : 2700, #200请求个数 “xx5_count” : 1, #5xx请求个数 “ngxtime_total” : 7.191, #nginx请求总时间 “be3_count” : 0 #backend响应时间超过3秒的个数PPTV LB日志分析逻辑(4)每五分钟对前五分钟mongodb收集到的日志基于后端机器进行汇总计算(python/pymongo),得出结果存入mongodb中的b

18、ackend_detail表: #某域名中某后端机器(backend_ip:80)过去5分钟的4xx/5xx/响应时间/超时次数情况 db.backend_detail.findOne() _id : ObjectId(509677552573b02445000004), bk_xx5_count : 183, bk_be3_count : 62, bk_ng3_count : 65, bk_body_size_total : 214842812, bk_ngx_time_total : 1443.1720000000564, bk_be1_count : 83, domain : “, bk_total : 25378, server : “LB_NAME,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论