1. 掘金Nginx日志 张波 虎牙直播-基础保障部
2. 前言 • Nginx(读作 Engine-X)是现在最流行的负载均 衡和反向代理服务器之一。仅 Nginx 每天就会产 生上百 M 甚至数以十 G 的日志文件。当是有多 少人关注过它背后的价值。
3. 经典的CDN故障处理场景 1 用户报障页面访问不了 2 开发上系统系统运行一切正常 3 开发向运维要求提供系统原始日志帮忙定位问题 4 运维联系CDN运营商排查问题 5 等待CDN厂商解决问题 3
4. Nginx日志格式 log_format main '$host#_#$remote_addr#_#$upstream_addr#_#[$time_local]#_#$request#_#$status#_#$b ody_bytes_sent#_#$http_referer#_#$http_user_agent#_#$request_time#_#$upstream_res ponse_time'; host remote_addr upstream_addr request body_bytes_sent http_referer http_user_agent request_time upstream_response_time 域名,如:www.yy.com 用户真实IP地址 服务器节点ip 记录请求的方法、URI和HTTP协议信息status记录请求状态/返回码:如:404、200、206、502 发送给客户端的字节数,不包括响应头的大小 记录从哪个页面链接访问过来的 记录 客户端 浏览器相关信息 请求处理时间 后端处理时间
5. CDN日志格式 log_format main '$host#_#$remote_addr#_#$upstream_addr#_#[$time_local]#_#$request#_#$status#_#$b ody_bytes_sent#_#$http_referer#_#$http_user_agent#_#$request_time#_#$upstream_res ponse_time#_#$local_addr#_#$hit_info#_#$cdn_user_agent#_#$bytes_sent'; host remote_addr upstream_addr request body_bytes_sent http_referer http_user_agent request_time upstream_response_time local_addr hit_info CDN加速域名,如:www.yy.com 用户真实IP地址 回源ip 记录请求的方法、URI和HTTP协议信息status记录请求状态/返回码:如:404、200、206、502 发送给客户端的字节数,不包括响应头的大小 记录从哪个页面链接访问过来的 记录 客户端 浏览器相关信息 请求处理时间 后端处理时间 CDN厂商的边缘节点IP 1、HIT:命中成功,直接响应内容给客户端; cdn_user_agent bytes_sent 2、MISS:命中失败,可能存在两种情况: (1)边缘节点回CDN上层节点; (2)直接回客户源站; 记录 CDN厂商 浏览器相关信息 发送给客户端的总字节数;
6. Nginx日志 — 性能数据指标覆盖 IT逻辑单 元 指标项 IDC层 响应时间、连通率 CDN层 响应时间、吞吐量、性能指数、回源率、异常 应用IP 响应时间、延时分布、吞吐量、性能指数、异常 ISP 响应时间、吞吐量、性能指数、异常 省份 响应时间、吞吐量、性能指数、异常 浏览器类型 响应时间、吞吐量、性能指数、异常 操作系统类型 响应时间、吞吐量、性能指数、异常
7. remote_addr 1 UV计算 2 ISP分布 3 地域分布 7
8. upstream_addr 1 Idc分布 2 Ip分布 8
9. body_bytes_sent 1 带宽统计 2 下载速率 9
10. http_referer 1 流量来源 2 转化率漏斗图 3 SEO 10
11. http_user_agent 1 浏览器分布 2 操作系统分布 3 爬虫识别 11
12. request_time(upstream_response_time ) 1 延时分布 2 平均延时 12
13. request 1 URI分布 2 返回码分布 3 请求类型分布 13
14. Apdex量化应用性能
15. 应用性能量化和染色 比如有100个目标时间T等于2秒的样本。60 个样本低于4秒,30个样本在4到8秒之间, 余下的10个样本高于8秒 Apdex的算式如下: 0.753=(60+30/2)/100 结果中的3代表目标响应时间。Apdex的结 果始终显示与指数相关的目标时间。 Apdex报告提供了展示应用状况的独特视图。 用户可以轻松掌握每个应用的真正相关性能。 例如,两个指数为0.85T的应用提供了相同 水平的用户体验。
16. 服务拓扑健康染色
17. 账单计算手段 项 AA云 TT云 XX云 计算方式 基于访问日志统计带宽*系数 基于访问日志统计带宽*系数 基于网卡出口带宽统计 数据确定方式 仅参考厂商后台 仅参考厂商后台 仅参考厂商后台 对账手段 带宽与业务指标(UV)对比 带宽与业务指标(UV)对比 带宽与业务指标(UV)对比 对账精度 3-8%之间 数据差异较大的处理方法 无 无 无 项 AA云 TT云 XX云 计算方式 基于访问日志统计带宽*系数 数据确定方式 虎牙CDN独立复算数据 对账手段 拨测带宽与CDN日志带宽对比 CDNAPI带宽与CDN日志带宽对比 对账精度 拨测误差:<1% 新账单计算手段 总带宽误差:<0.5% 数据差异较大的处理方法 拨测误差<1% 总带宽误差<1%
18. 独立复算逻辑 • 拨测实际下载带宽 VS CDN日志记录带宽 – 覆盖90%+流量 – 拨测时间段凌晨3点到下午3点 – 拨测带宽保证一定的量 • CDN日志复算总带宽VS CDN API计费带宽 – 次日6点以后下载全部日志后计算 – API获取全部域名带宽数据统计 • 网卡流量 VS CDN日志计算带宽 – 复算带宽系数
19. 拔测数据与CDN厂商日志数据对比 阿里拨测日总带宽/阿里CDN日志日总带宽 = 1.0062 网宿拨测日均带宽/网宿CDN日志日均带宽 = 0.9998 腾讯拨测日总带宽/腾讯CDN日志日总带宽 = 1.0061
20. 三线路码率偏差对比 AA: 2000Kbps: 0.992; 4000Kbps: 0.927; • BB: 2000Kbps: 0.996; 4000Kbps: 0.926; • CC: 2000Kbps: 0.992; 4000Kbps: 0.925; 不同码率偏差是不同,BB偏差最小 •
21. – AA 1.031 – BB 1.049 – XX 1.043 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121 126 131 136 141 146 151 156 161 166 1 6 11 16 21 26 31 36 41 46 51 56 61 66 71 76 81 86 91 96 101 106 111 116 121 126 131 136 141 146 151 156 161 166 • 网卡流量/下载量 0 1 6 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 1 1 1 1 1 1 1 1 1 1 1 1 1 1 网卡系数 500 AA 网卡 网卡 网卡 日志 BB 500 0 日志 XX 500 0 日志
22. 结费带宽数据对比 厂商 日期 厂商API数据 厂商日志复算数据 峰值带宽(M) 峰值时间点 峰值带宽(M) 峰值时间点 站外带宽(M) 记费误差率 拨测日志误差率 拔测客户端带宽/ 拔测CDN日志复算 带宽 XX云 2018-xx-06 xxx 2018-xx-06 21:45 xxx 2018-10-06 21:40 xx 6xx.53 0.74% BB云 2018-xx-06 xxx 2018-xx-06 18:35 xxx 2018-10-06 18:35 xx 1xx.77 0.10% AA云 2018-xx-06 xxx 2018-xx-06 18:35 xxx 2018-10-06 18:35 xx 2xx.64 1.93%
23. 产品技术实现 Java Script 访问请求 JSP/Servlet 访问应答 浏览器 Java Bean EJB ESB JDB C 类加载 J2EE应用服务器 JVM JMS Web Services Databases JVM agent 实时监控平台 Nginx日志 统计服务器 外部系统 CDN边缘节点 WEB集群 用户体验端采集器 3rd Party Applications JMX 服务器端采集器 Cdn日志采 集器
24. 开源分析工具 1 ELK 2 Druid.io,Kylin 3 Storm,Spark

相关幻灯片