1、我为可观测性做减法我为可观测性做减法:微信日志热点约简实践与探索微信日志热点约简实践与探索余广坝(中山大学博士研究生)关于我关于我2 姓名:余广坝 学校:中山大学 年级:2020 级博士(预计2024年毕业)导师:陈鹏飞副教授 研究方向:云原生应用性能诊断与优化 Cloud Nativa 可观测性 AIOPS 混沌工程 腾讯犀牛鸟精英人才计划(微信)日志热点约简 异常变更定位WeeklyCloudPaper个人主页yuxiaoba.github.io1 1日志热点研究背景2 2日志热点工业实证研究3 3日志热点约简工业实践4 4日志热点约简 eBPF 探索5 5分享总结与未来展望目录目录31.
2、日志热点研究背景 日志是可观测性的三大支柱之一 海量的日志数据是一把双刃剑 存储成本巨高 性能开销巨大 难以排查故障研究背景研究背景微信内部每天可产生 16 到 20 PB 的日志数据5 如何削减海量的日志?幸运的是我们发现了日志热点的存在 日志热点:少量的日志模板占用了大量的空间少量的日志模板占用了大量的空间 日志热点定义:S 是一个服务所有日志模板的存储总量,Si 是单个日志模板的存储量研究背景研究背景62.日志热点工业实证研究 研究对象 针对微信日志存储量 Top 20 的 20 个服务的日志热点 邀请服务的负责人填写调查问卷 研究目标 日志热点对存储影响有多大?日志热点对性能影响有多大
3、?日志热点出现的根因是什么?日志热点如何被修复?日志热点修复需要多长时间?日志热点是否会反复出现?工业实证研究工业实证研究8 日志热点对存储有多大影响?工业实证研究工业实证研究 Top 20 的服务占据了 52%的日志存储空间 Top 20 的服务中有 19 个至少包含了一个日志热点9 日志热点对存储有多大影响?工业实证研究工业实证研究 Top 20 的服务中,日志热点平均占据了超过各自服务 57%的存储空间 极端情况一个日志热点占用一个服务 95%的存储空间10 日志热点对性能有多大影响?工业实证研究工业实证研究 程序仅修复日志前后对比,工作负载相对稳定 存在日志热点的版本多消耗 5%的 C
4、PU(58 core)存在日志热点的版本多增加 3%的延迟(1.8 ms)11 日志热点的根因是什么?工业实证研究工业实证研究 错误的日志等级(40%)遗忘的测试日志(22.8%)依赖模块错误(10.5%)依赖包日志(8.77%)错误的染色配置(7.01%)合理的热点(5.26%)自身模块错误(3.5%)12 日志热点如何被修复?工业实证研究工业实证研究 修正日志等级(31.57%)删除日志语句(29.82%)修复模块错误(15.78%)打开日志染色(10.52%)修正日志染色配置(7.01%)合并日志语句(3.5%)缩短日志长度(1.75%)13 日志热点出现原因与修复方式关联工业实证研究工
5、业实证研究 开发工程师可以从历史解决方案中受益,这些解决方案不仅可以加快修复速度,还可以避免打印日志热点14 日志热点修复需要多长时间?工业实证研究工业实证研究 97%的日志热点需要超过 3 天来修复,平均需要 9 天15 日志热点是否会反复出现?工业实证研究工业实证研究 90%的服务在当前日志热点被修复后,再次出现日志热点163.日志热点约简工业实践 日志模板解析(Log Parsing)1.1.提取日志等级、日志位置行号、划分单词提取日志等级、日志位置行号、划分单词日志热点约简日志热点约简工业实践工业实践18日志模版挖掘工作流示例 日志模板解析(Log Parsing)1.提取日志等级、日
6、志位置行号、划分单词2.2.基于日志位置行号进行聚类基于日志位置行号进行聚类日志热点约简日志热点约简工业实践工业实践19不同编程语言配置打印日志行号 日志模板解析(Log Parsing)1.提取日志等级、日志位置、划分单词2.基于日志位置进行聚类3.3.挖掘词频获得日志模板挖掘词频获得日志模板词频日志行数一致日志热点约简日志热点约简工业实践工业实践20日志模版挖掘工作流示例 定时运行 Log Parsing 程序,根据日志存储量识别日志热点 S 是一个服务所有日志模板的存储总量,Si 是单个日志模板的存储量 发现日志热点,企业微信自动拉群企业微信自动拉群,生成日志告警,服务重新上线日志热点约