web_log_analyse - Web 故障排除与性能优化工具


GPL-3.0
跨平台
Python

软件简介

web_log_analyse 是一个旨在基于 Web 日志进行故障排除和性能优化的工具,这不是一般所说的日志分析/统计解决方案,它不侧重于通常的
PV、UV 等展示,而是在指定时间段内提供细粒度(最小分钟级别)的异常定位和性能分析。

环境依赖:

Python 3.4+

pymongo-3.7.2+

MongoDB-server 3.4+

功能

  1. 提供统一的日志分析入口:经由此入口,可查看站点在所有server上产生的日志的汇总分析;亦可根据时间段server两个维度进行过滤
  2. 支持对 request_uriipresponse_code 三大类进行分析;每一类又基于请求数响应大小响应时间三个维度进行分析。另外不同子项又各有特点
  3. request_uri 分析能直观展示哪类请求数量多、哪类请求耗时多、哪类请求占流量;另外可展示某一类请求在不同时间粒度里(minute, ten_min, hour, day)各指标随时间的分布变化;也可以针对某一 uri_abs 分析其不同 args_abs 各指标的分布
  4. IP 分析将所有请求分为3种来源(from_cdn/proxy, from_reverse_proxy, from_client_directly),三种来源各自展示其访问量前 N 的 IP 地址;并且可展示某一 IP 访问的各指标随时间的分布;也可针对某一 IP 分析其产生的不同 uri_abs 各指标的分布

特点

  1. 核心思想 : 对request_uri进行 抽象归类 ,将其中变化的部分以 “*” 表示,这样留下不变的部分就能代表具体的一类请求。实际上是换一种方式看待日志,从 “以具体的一行日志文本作为最小分析单位” 抽象上升到 “以某一功能点,某一接口或某一模块最为最小分析单位”
  2. 兼容plaintext和json格式的日志内容
  3. 配置方便,不需要写正则。只要将nginx中定义的log_format复制到config文件中即可
  4. 通过4分位数概念以实现对响应时间响应大小更准确的描述,因为对于日志中的响应时间,算数平均值的参考意义不大
  5. 支持定制抽象规则,可灵活指定请求中的某些部分是否要抽象处理以及该如何抽象处理
  6. 高效,本着谁产生的日志谁处理的思想,日志分析脚本log_analyse要在web服务器上定时运行(有点类似分布式),因而log_analyse的高效率低资源也是重中之重。经测试,在笔者的服务器上(磁盘:3*7200rpm RAID5,千兆局域网),处理速度在20000行/s~30000行/s之间