- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PPTVLB日实时分析平台
PPTV LB日志实时分析平台
XinyiZhou
xinyizhou@
11/5 2012
Agenda
PPTV LB日志实时分析系统介绍
实际面临的问题
解决方案
系统部署
系统实现
Fluentd(td-agent)
MongoDB
Python Script(PyMongo module)
Zabbix
应用实例
Nginx return code 4xx 5xx 监控
Nginx响应时间监控
告警邮件自动分析程序
LB日志实时分析与自动Release平台的集成
实际面临的问题
PPTV采用Nginx+Keepalived的方式构建Load Balancer,共有约40台LB server,每台承载10-50个域名的流量,我们需要精确的把握所有域名的健康状态(返回码是否正常,4xx/5xx率),及响应时间变化趋势;能够准实时的发现入侵行为;
难点:
日志量大 – 每台LB每天都有几百GB日志(压缩前)
日志分散不易进行统一分析
难以添加有效监控
解决方案(一)
awk+grep+bash+gnuplot
最方便的一招,比较灵活,计算准确;但实际使用不方便,看一个域名的日志需要登陆好几台LB
E.g. 统计非200的top return code
awk {if ($9 ~ /^[0-9]*$/ $9 != 200 $9 !~ /^3/) code[$9]++}END {for ( i in code ) print i code[i]}|sort -k2 –nr
使用gnuplot对统计结果绘图
cut –d’’ –f1-4 log.txt | uniq –c | (echo “plot “-” using 2:1 with lines”;cat)|gnuplot
解决方案(二)
Python+zabbix
每台LB均部署python日志分析脚本,通过zabbix调度,每隔五分钟对前五分钟生产的日志文件进行分析,保留分析结果;
Zabbix负责绘图和告警;
主要两个缺点:
1)性能瓶颈,日志分析占用大量LB CPU资源
2)不够灵活,日志分析局限于单台LB
解决方案(三)
Fluentd+Mongodb+Python+zabbix
Fluentd实时收集LB日志,JSON化,存入中央Mongodb
Python程序查询Mongodb数据进行实时计算;计算结果存入zabbix;zabbix负责告警及图形展现
P.S. That’s 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/Mongodb数据流图
Fluentd plugin说明(1)
在不使用plugin的情况下Fluentd仅仅是将日志输入转化为JSON格式输出的工具;各类plugin极大拓展了Fluentd的功能
Fluentd plugin有如下三种:
Input plugin 定义日志来源标准化,输入的格式
Buffer plugin 定义fluentd缓存的配置以实现可靠性
Output Plugin 定义输出的格式及目的地,可以是文件,网络,数据库,etc
Fluentd plugin说明(2)
Fluentd Input Plugin
http
让fluentd从http client获取数据
tail
tail是最常用的input plugin;
source
type tail
path /var/log/httpd-access.log #tail监听的文件地址
tag apache.access #每个输入需要一个特定标签以区别
format apache|syslog|自定义正则 #format可以灵活自定义
/source
foward
将其他fluentd/fluent-cat命令的输出作为该fluentd的输入;
exec
通过执行外部命令,以命令执行的结果作为fluentd的输入;
Fluentd plugin说明(3)
Fluentd Output Plugin
Ouput Plugin用于存储Fluentd
文档评论(0)