乐趣区

关于后端:构造请求日志分析系统

申请日志记录哪些数据

  • time_local : 申请的工夫
  • remote_addr : 客户端的 IP 地址
  • request_method : 申请办法
  • request_schema : 申请协定,常见的 http 和 https
  • request_host : 申请的域名
  • request_path : 申请的 path 门路
  • request_query : 申请的 query 参数
  • request_size : 申请的大小
  • referer : 申请起源地址,假如你在 a.com 网站下贴了 b.com 的链接,那么当用户从 a.com 点击拜访 b.com 的时候,referer 记录的就是 a.com,这个是浏览器的行为
  • user_agent : 客户端浏览器相干信息
  • status : 申请的响应状态
  • request_time : 申请的耗时
  • bytes_sent : 响应的大小

很多时候咱们会应用负载网关去代理转发申请给理论的后端服务,这时候申请日志还会包含以下数据:

  • upstream_host : 代理转发的 host
  • upstream_addr : 代理转发的 IP 地址
  • upstream_url : 代理转发给服务的 url
  • upstream_status : 上游服务返回的 status
  • proxy_time : 代理转发过程中的耗时

数据衍生

客户端 IP 地址能够衍生出以下数据:

  • asn 相干信息:

    • asn_asn : 自治零碎编号,IP 地址是由自治系统管理的,比方中国联通上海网就治理了所有上海联通的 IP
    • as_org : 自治零碎组织,比方中国移动、中国联通
  • geo 地址地位信息:

    • geo_location : 经纬度
    • geo_country : 国家
    • geo_country_code : 国家编码
    • geo_region : 区域(省份)
    • geo_city : 城市

user_agent 能够解析出以下信息:

  • ua_device : 应用设施
  • ua_os : 操作系统
  • ua_name : 浏览器

数据分析

  • PV / QPS : 页面浏览次数 / 每秒申请数
  • UV : 拜访的用户人数,很多网站用户无序登录也能拜访,这时能够依据 IP + user_agent 的唯一性确定用户
  • IP 数 : 拜访起源有多少个 IP 地址


<br/>

  • 网络流量 : 依据 request_size 申请的大小计数网络流入流量,bytes_sent 响应大小计算网络流出流量


<br/>

  • referer 起源剖析


<br/>

  • 客户申请的地理位置剖析:依据 IP 地址衍生的 geo 数据



<br/>

  • 客户设施剖析:依据 user_agent 提取数据


<br/>

  • 申请耗时统计:依据 request_time 数据

    • p99、p95、p90 提早(前多少百分比申请的耗时,比方 p99 就是前 99% 申请的耗时)
    • 长耗时异样监控

<br/>

  • 响应状态监控:依据 status 数据

    • 各个状态码的响应占比
    • 5xx 服务端异样数量

<br/>

  • 联合业务剖析:申请的 request_path 地址和 request_query 参数肯定是对应具体业务的,例如

    • 申请某个相册的地址是 /album/:id,那么日志中的 request_path 对应的就是对相册进行了一次拜访
    • 进行站内搜索的地址是 /search?q=< 关键词 >,那么统计 request_path/search 的日志条数就能够晓得进行了多少次搜寻,统计 request_queryq 的参数就能够晓得搜寻关键词的状况

通用架构

日志零碎应用 ELK + kafka 构建是业界比拟支流的计划,beats、logstash 进行日志采集搬运,kafka 存储日志期待生产,elasticsearch 进行数据的聚合剖析,grafana 和 kibana 进行图形化展现。

退出移动版