6 微服务架构谈:从监控到故障定位

六、服务调用跟踪
众所周知 , trace架构基本都源自。

6  微服务架构谈:从监控到故障定位

文章插图
下图为高德在基于trace基础上做的场景应用 , 比如服务状态自我诊断、监控追溯等 。
6  微服务架构谈:从监控到故障定位

文章插图

6  微服务架构谈:从监控到故障定位

文章插图
上图为支付宝app通过无线网关的trace示意图 , 包括应用链路 , 文件存储 。应用链路包括rpc调用和消息服务 。《分布式服务框架》一书 , 林峰特别对服务调用链价值进行了汇总 , 体现了对于不同角色 , 服务调用链路跟踪的价值所在 。
开发:
架构优化
消除不合理依赖
性能优化
还可以补充容量评测、设计变更分析等
测试:
识别调用流程
优化测试用例
关键路径覆盖率
还可以补充自动化端到端测试
运维:
故障定界
故障定位
提前预警
易故障点识别
七、不能承受之重:监控 7.1 监控预警的疑难问题
监控最大的问题是消息很多 , 我来不及看 。漏报伤不起 , 误报也很烦 , 说不想半夜三更好好的睡睡觉 。总结监控预警的疑难问题 , 大致可以分为几类:
报警多到没朋友、长期容易懈怠
对于固定阈值的报警 , 没有可调适性 , 可以形成动态阈值方案 , 在动态阈值上限、下限范围内都属于业务正常 。
6  微服务架构谈:从监控到故障定位

文章插图
不容易察觉的阴跌或者缓慢性问题
6  微服务架构谈:从监控到故障定位

文章插图
耗时在不断的增加 , 一直到濒临临界点爆发 。采取常规固定阈值或者同环比的监控 , 比较难发现问题 。
6  微服务架构谈:从监控到故障定位

文章插图
对于上图 , 绿色线为观测时间 , 通过变点检测方法 , 相比传统阈值报警发现时间可以做一定的提前 。
周期性波动导致的误报或漏报
6  微服务架构谈:从监控到故障定位

文章插图
周日和工作时间的业务规模 , 用户影响业务模型有差别 , 亦可通过动态阈值方案来尽量减少误报 , 规避漏报 。周期性可以分为几种:按日、按周、按月、按工作日等方式 , 需要针对不同业务定义不同的预警方式 。通过多次优化可以总结出如下预警阈值的优化方法:
分类法:把业务按业务波动分类:定时任务类业务、平稳类业务 , 针对不同业务配置的阈值及取值方式不对 。例如:外部商户交易是平稳业务性的 , 业务曲线相对平稳 , 取值方式可以环比和同比结合起来使用配置 , 而XX代扣、XX代发业务都是波动性业务 , 对应监控阈值除了同比还需要考虑业务量范围 。
业务波动学习法:经过分析部分业务在固定时间点会有波动 , 可以考虑针对业务分段监控 , 在波动段采用环比+值范围的监控方式 。例如:XX交易每天在10点、20点、0点都是有比较大的波动 , 其他整点时间有小量波动 。
时间分段法:针对现有业务变更一般都是在白天发生 , 同时晚上有一些业务存在定时和由于量小导致的波动曲线大的问题 , 可以考针对09:00至21:00和21:00至09:00配置不同阈值 。