美团点评前端高级技术专家 刘敬威 - 美团 crash 监控分析系统优化之路:crash 率从千分位到万分位

2020-02-27 567浏览

  • 1.美团 Crash 监控分析系统优化之路路 Crash 率从千分位到万分位 刘敬威
  • 2.刘敬威 美团平台部⻔门 FE 负责⼈人 负责美团前端技术体系、
 混合应⽤用开发
 性能监控平台等基础技术建设
  • 3.内容 • 美团 Crash ⼯工作背景 • 如何从多⽅方向推动 Crash 率降低 • 总结
  • 4.背景 • 美团 Crash 问题的挑战 • Crash ⼯工作的定义 • 出现的问题和反思https://pixabay.com/en/quality-control-quality-control-571146/
  • 5.美团 Crash 问题的挑战 • Crash 率⻓长时间在千分位 • Crash ⻓长尾严重 • 航⺟母应⽤用 • 缺乏有效的 Crash 协同分⼯工机制
  • 6.Crash 率⻓长期千位数的问题和反思 ⽬目标不不明确 ⼯工作安排不不科学,投⼊入⼒力力⽓气⽩白作⼯工 缺乏系统性⽀支撑 ⼯工具能⼒力力有限,数据建设滞后 ⽬目标管理理和过程管理理缺少连接 推不不动 vs 不不认可 机制缺失 专项⼩小组:⼈人⼒力力和 Crash 数量量不不匹配 跨组共建:缺乏有效协同分⼯工机制
  • 7.Crash 专项⼯工作的⽬目标分析 短期⽬目标 显著降低 Crash 率 构建有效的 Crash 处理理模式 提升排查处理理效率 培养
 质量量意识 有效反馈 ⽴立体保障 防⽌止问题重复发⽣生 提升处理理效率 ⾼高效协同推进 推动解决线上问题 ⻓长期⽬目标 提供数据和⼯工具⽀支撑 推动完善质量量保障体系 ⻓长时间能保持低的 Crash 率
  • 8.推动解决线上问题 • 提升执⾏行行⼒力力 • ⾼高效协同推进https://www.flickr.com/photos/bagogames/24707027581
  • 9.如何提升执⾏行行⼒力力:各阶段需求 Crash 问题处理理流程 寻找⽬目标 排查解决 • 定义⽬目标 • 分解任务 • ⼯工作流整合 • 多因素分析 反馈 • 量量化反馈 • 快速验证 • ⽴立体保障 通过 Crash 监控分析系统提供整体⽀支撑 从数据和⼯工具两个⽅方⾯面提升处理理效率 ⽤用流程来规范⾏行行为,降低⻔门槛
  • 10.寻找⽬目标https://pixabay.com/en/target-objectives-archery-meeting-1500949/
  • 11.寻找⽬目标:定义和需求分析 从线上故障中获取信息,合理理安排,推动解决 复现 条件 影响 范围 环境 信息 严重 程度 责任 归属 问题 类别 提升信息量量 优先级和⼈人员安排问题 满⾜足场景需求 改进⽀支撑系统,提升能⼒力力
  • 12.寻找⽬目标的挑战 数据量量⼤大 > 10w 反混淆、符号化都是⿊黑盒 后续任务分解:依赖前置处理理 ⽼老老监控系统能⼒力力有缺失 iOS • 时效性:T + 1 • 顺序处理理,⽆无法处理理⾼高峰期队列列积压 • ⽆无报警 • 分类规则单⼀一,修改困难 • 数据分析能⼒力力差,Crash 影响⾯面难以量量化 • 数据⼝口径不不规范,和邮件报表不不统⼀一 Android • 时效性:⼩小时级离线处理理 • ⽆无报警 • ⼿手⼯工反混淆 • 分类规则修改复杂 • 数据分析能⼒力力差,Crash 影响⾯面难以量量化 • 不不保存 8 天前的数据;数据疑问⽆无可对证
  • 13.Crash 监控系统架构 客户端 SDK 收集层 LogCollector Kafka 原始⽇日志 Elastic Search 计算层 MMMaMacacacc sesensentsientnintneitnelinel el l 反反混反混反淆混反淆混符淆混淆号淆化 LLiLniLniLuniunixunxuxuxsxesensentsientsnientneintnelitnelinel el l 反反混反混反淆混反淆混反淆混反淆混淆混淆淆 收集结果 调度 ⼼心跳 Storm MySQL Crash 处理理服务 Redis 符号化/反混淆⽇日志 Elastic Search 机器器学习分类模型 数据层 合并⽇日志 错误分类 符号表映射 事件关联 推送事件 客户端周边系统 应⽤用层 Crash ⼯工作台 web 报警 邮件报表 API
  • 14.处理理实时化:计算层设计 客户端 SDK 收集层 LogCollector 原始⽇日志 Kafka ⾼高峰并发数调El度astic Search 计算层 MMMaMacacacc sesensentsientnintneitnelinel el l 反反混反混反淆混反淆混符淆混淆号淆化 LLiLniLniLuniunixunxuxuxsxesensentsientsnientneintnelitnelinel el l 反反混反混反淆混反淆混反淆混反淆混淆混淆淆 收集结果 调度 ⼼心跳 Storm MySQL Crash 处理理服务 Redis 符号化/反混淆⽇日志 Elastic Search • 缓存优化 • 动态调度 机器器学习分类模型 • 容器器化 • 背压数据层 合并⽇日志 应⽤用层 Crash ⼯工作台 web 错误分类 报警 符号表映射 缓存命事件中关率联 > 95% 时效性:1~5 min 推送事件 邮件报表 API 客户端周边系统
  • 15.处理理实时化:应⽤用层设计 客户端 SDK • 实时处理理、实时分类 • ⽇日志时间乱序对Lo⻬gC齐ollector 收集层 Kafka 原始⽇日志 Elastic Search 计算层 Storm 查询接⼝口返回时间 < 1sMMMaMacacacc sesensentsientnintneitnelinel el l ⼯工作台响应时间 < 3s反反混反混反淆混反淆混符淆混淆号淆化 收集结果 MySQL LLiLniLniLuniunixunxuxuxsxesensentsientsnientneintnelitnelinel el l 反反混反混反淆混反淆混反淆混反淆混淆混淆淆 调度 ⼼心跳 Crash 处理理服务 Redis 符号化/反混淆⽇日志 Elastic Search 机器器学习分类模型 数据层 合并⽇日志 错误分类 符号表映射 事件关联 推送事件 客户端周边系统 应⽤用层 Crash ⼯工作台 web 报警 邮件报表 API
  • 16.处理理实时化:案例例 直播过程中结合客诉和报警判断有 Crash 20 分钟定位问题,并完成临时修复
  • 17.如何明确⽬目标 业务⽅方分散:如何确定责任归属? Crash ⻓长尾严重:如何找到重要问题?
  • 18.跟进历史问题:从规则分类到⾃自动聚类 硬编码 • ⼀一套规则,不不分版本和频道 配置化 • ⾃自助维护 • ⽀支持多版本规则 • 跨 app 的⽇日志追踪 • 可实现报警 规则分类 主要解决协同问题 机器器学习 • 准确率 > 99% • 实时聚类,模型在线更更新 • 有效减少⻓长尾 • ⾃自动发现新错误 ⾃自动聚类
 解决⻓长尾问题
  • 19.如何明确⽬目标:案例例 iOS ⻓长尾很⼤大⼀一部分是内存问题 内存问题占⽐比 46% 下降到 10% 以内 降低维护成本 ⽀支持美团 40+ app,发版⼏几乎⽆无需指定分类规则
  • 20.更更快排查解决问题https://commons.wikimedia.org/wiki/File:Diana_System.jpg
  • 21.提升排查问题的效率和能⼒力力:需求分析 重复性⼯工作标准流程化 ⼯工具⾃自动化 差异化功能、界⾯面 需求理理解 ⼯工作流组织 ⽅方案设计 • ⻆角⾊色、能⼒力力、信息需求分析 • 明确⽬目标、协作⽅方式 • 重复性⼯工作标准流程化 • 提供差异化功能和界⾯面 • 外部系统整合 • 提⾼高系统复⽤用性、降低开发成本
  • 22.标准化⼯工作流:⽤用⼯工具提升效率 • ⻆角⾊色、能⼒力力、信息需求分解 • ⼀一站式服务 • 从发现到解决的全⽣生命周期追踪 概览 业务频道 错误分类 详情
  • 23.⼯工具⾃自动化 报警 报表 ⼀一键开 task
  • 24.排查解决问题:提升信息量量 聚类和分类 多因素分析 覆盖开发、提测、灰度、线上 机型、地域、系统、⽤用户等 可扩展性 允许上报额外信息 体系化建设 打通其他系统数据
  • 25.排查解决问题:监控分析体系化 外部系统整合协作:热补丁 robust,OOM,JNI,⼤大图监控,⻚页⾯面流量量 等
  • 26.⾼高效协同推进 虚拟⼩小组 专项⼩小组 单⼀一虚拟⼩小组 虚拟⼩小组 ⽬目标:降低该类别 Crash 率 过程:IM 持续管理理、降低合作成本 虚拟⼩小组 ⼯工具和数据能⼒力力统⼀一 + OA 集成 = 资源匹配 + 更更好的过程管理理
  • 27.⼩小结:解决线上问题 • 定义⽬目标,有效分解任务 • 从数据、⼯工具、流程⽅方⾯面提供⽀支撑,提升排查解决的能⼒力力 • 找到有效协同推进的机制
  • 28.防⽌止问题重复发⽣生https://www.flickr.com/photos/bagogames/24707027581
  • 29.有效反馈 量量化反馈 反馈根本问题 ⻓长尾 Crash 中⼀一半以上都是内存问题
  • 30.⽴立体保障 问题反馈到整个开发过程 协调资源,共同推进,形成多重保障 例例⼦子:运营活动配置常引发 Crash 活动上线前 URL 验证 降低测试⻔门槛:活动开发、预览能⼒力力建设 URL 跳转 app 兜底处理理 ⼤大图监测等多种监测和报警 研发期 交付后 监控 内测期 灰度期 周边系统 周边系统
  • 31.培养质量量意识https://www.flickr.com/photos/bagogames/24707027581
  • 32.培养质量量意识 ⾃自上⽽而下重视 数据驱动,建⽴立监督、检查和测评体系 培训、交流
  • 33.总结:多⽅方向推动 Crash 率降低 解决线上问题 • 提⾼高执⾏行行⼒力力,定义⽬目标,有效分解任务 • 从数据、⼯工具两⽅方⾯面提供⽀支撑,提升排查解决的能⼒力力 • 找到有效协同推进的⽅方式 防⽌止问题重复发⽣生 • 总结问题,举⼀一反三 • 系统联动,⽴立体保障 培养质量量意识 • 反馈机制建⽴立 • 增强培训
  • 34.美团质量量⼯工作的成果 • Crash 率从千⼏几到万⼏几,⻓长期保持 • Crash ⻓长尾问题基本解决 • 线上处理理问题时间:⼩小时级别 • 树⽴立了了 Crash 协同推进⽅方式 以监控系统带动,从质量量、⼯工具、和流程三个⽅方⾯面构建质量量⼯工作的闭环
  • 35.谢谢 美团点评技术博客