web_log_analyse Web 故障排除与性能优化工具 项目简介
web_log_analyse 是一个旨在基于 Web 日志进行故障排除和性能优化的工具,这不是一般所说的日志分析/统计解决方案,它不侧重于通常的 PV、UV 等展示,而是在指定时间段内提供细粒度(最小分钟级别)的异常定位和性能分析。环境依赖: Python 3.4+ pymongo-3.7.2+ MongoDB-server 3.4+功能提供统一的日志分析入口:经由此入口,可查看站点在所有server上产生的日志的汇总分析;亦可根据时间段和server两个维度进行过滤 支持对 request_uri,ip 和 response_code 三大类进行分析;每一类又基于请求数、响应大小、响应时间三个维度进行分析。另外不同子项又各有特点 request_uri 分析能直观展示哪类请求数量多、哪类请求耗时多、哪类请求占流量;另外可展示某一类请求在不同时间粒度里(minute, ten_min, hour, day)各指标随时间的分布变化;也可以针对某一 uri_abs 分析其不同 args_abs 各指标的分布 IP 分析将所有请求分为3种来源(from_cdn/proxy, from_reverse_proxy, from_client_directly),三种来源各自展示其访问量前 N 的 IP 地址;并且可展示某一 IP 访问的各指标随时间的分布;也可针对某一 IP 分析其产生的不同 uri_abs 各指标的分布特点核心思想: 对request_uri进行抽象归类,将其中变化的部分以 “*” 表示,这样留下不变的部分就能代表具体的一类请求。实际上是换一种方式看待日志,从 “以具体的一行日志文本作为最小分析单位” 抽象上升到 “以某一功能点,某一接口或某一模块最为最小分析单位” 兼容plaintext和json格式的日志内容 配置方便,不需要写正则。只要将nginx中定义的log_format复制到config文件中即可 通过4分位数概念以实现对响应时间和响应大小更准确的描述,因为对于日志中的响应时间,算数平均值的参考意义不大 支持定制抽象规则,可灵活指定请求中的某些部分是否要抽象处理以及该如何抽象处理 高效,本着谁产生的日志谁处理的思想,日志分析脚本log_analyse要在web服务器上定时运行(有点类似分布式),因而log_analyse的高效率低资源也是重中之重。经测试,在笔者的服务器上(磁盘:3*7200rpm RAID5,千兆局域网),处理速度在20000行/s~30000行/s之间