链路分析 K.O “五大经典问题”

简介:链路分析是基于已存储的全量链路明细数据,自由组合筛选条件与聚合维度进行实时分析,可以满足不同场景的自定义诊断需求。

作者:涯海

链路追踪的 “第三种玩法”

提起链路追踪,大家会很自然的想到使用调用链排查单次请求的异常,或使用预聚合的链路统计指标进行服务监控与告警。其实,链路追踪还有第三种玩法:相比调用链,它能够更快的定界问题;相比预聚合的监控图表,它可以更灵活的实现自定义诊断。那就是基于明细链路数据的后聚合分析,简称链路分析。

链路分析是基于已存储的全量链路明细数据,自由组合筛选条件与聚合维度进行实时分析,可以满足不同场景的自定义诊断需求。比如,查看耗时大于 3 秒的慢调用时序分布,查看错误请求在不同机器上的分布,查看 VIP 客户的流量变化等。接下来本文将介绍如何通过链路分析快速定位五种经典线上问题,更直观的了解链路分析的用法与价值。

链路分析 K.O “五大经典问题”

基于后聚合的链路分析用法非常灵活,本文仅列举五种最典型的案例场景,其他场景欢迎大家一起探索分享。

【流量不均】负载均衡配置错误,导致大量请求打到少量机器,造成“热点”影响服务可用性,怎么办?

流量不均导致的“热点击穿”问题,很容易造成服务不可用,在生产环境中出现过多起这样的案例。比如负载均衡配置错误,注册中心异常导致重启节点的服务无法上线,DHT 哈希因子异常等等。

流量不均最大风险在于能否及时发现“热点”现象,它的问题表象更多是服务响应变慢或报错,传统监控无法直观反映热点现象,所以大部分同学都不会第一时间考虑这个因素,从而浪费了宝贵的应急处理时间,造成故障影响面不断扩散。

通过链路分析按 IP 分组统计链路数据,快速了解调用请求分布在哪些机器上,特别是问题发生前后的流量分布变化,如果大量请求突然集中在一台或少量机器,很可能是流量不均导致的热点问题。再结合问题发生点的变更事件,快速定位造成故障的错误变更,及时回滚。

1.png

【单机故障】网卡损坏/CPU 超卖/磁盘打满等单机故障,导致部分请求失败或超时,如何排查?

单机故障每时每刻都在频繁发生,特别是核心集群由于节点数量比较多,从统计概率来看几乎是一种“必然”事件。单机故障不会造成服务大面积不可用,但会造成少量用户请求失败或超时,持续影响用户体验,并造成一定答疑成本,因此需要及时处理这类问题。

单机故障可以分为宿主机故障和容器故障两类(在 K8s 环境可以分为 Node 和 Pod)。比如 CPU 超卖、硬件故障等都是宿主机级别,会影响所有容器;而磁盘打满,内存溢出等故障仅影响单个容器。因此,在排查单机故障时,可以根据宿主机 IP 和容器 IP 两个维度分别进行分析。

面对这类问题,可以通过链路分析先筛选出异常或超时请求,根据宿主机 IP 或容器 IP 进行聚合分析,快速判断是否存在单机故障。如果异常请求集中在单台机器,可以尝试替换机器进行快速恢复,或者排查该机器的各项系统参数:比如磁盘空间是否已满、CPU steal time 是否过高等。如果异常请求分散在多台机器,那大概率可以排除单机故障因素,可以重点分析下游依赖服务或程序逻辑是否异常。

2.png

【慢接口治理】新应用上线或大促前性能优化,如何快速梳理慢接口列表,解决性能瓶颈?

新应用上线或大促备战时通常需要做一次系统性的性能调优。第一步就是分析当前系统存在哪些性能瓶颈,梳理出慢接口的列表和出现频率。

此时,可以通过链路分析筛选出耗时大于一定阈值的调用,再根据接口名称进行分组统计,这样就可以快速定位慢接口的列表与规律,然后对出现频率最高的慢接口逐一进行治理。

找到慢接口后,可以结合相关的调用链、方法栈和线程池等数据定位慢调用根因,常见原因包括以下几类:

  • 数据库/微服务连接池过小,大量请求处于获取连接状态,可以调大连接池最大线程数解决。
  • N+1 问题,比如一次外部请求内部调用了上百次的数据库调用,可以将碎片化的请求进行合并,降低网络传输耗时。
  • 单次请求数据过大,导致网络传输和反序列化时间过长且容易导致 FGC。可以将全量查询改为分页查询,避免一次请求过多数据。
  • 日志框架“热锁”,可以将日志同步输出改为异步输出。

3.png

【业务流量统计】如何分析重保客户/渠道的流量变化和服务质量?

在实际生产环境中,服务通常是标准化的,但业务却需要分类分级。同样的订单服务,我们需要按照类目、渠道、用户等维度进行分类统计,实现精细化运营。比如,对于线下零售渠道而言,每一笔订单、每一个 POS 机的稳定性都可能会触发舆情,线下渠道的 SLA 要求要远高于线上渠道。那么,我们如何在通用的电商服务体系中,精准的监控线下零售链路的流量状态和服务质量呢?

在这里,可以使用链路分析的自定义 Attributes 过滤和统计实现低成本的业务链路分析。比如,我们在入口服务针对线下订单打上一个 {"attributes.channel": "offline"} 的标签,然后再针对不同门店、用户客群和商品类目分别打标。最后,通过对 attributes.channel = offline 进行过滤,再对不同的业务标签进行 group by 分组统计调用次数、耗时或错误率等指标,就可以快速的分析出每一类业务场景的流量趋势与服务质量。

【灰度发布监控】500台机器分10批发布,如何在第一批灰度发布后,就能快速判断是否有异常?

变更三板斧“可灰度、可监控、可回滚”,是保障线上稳定性的重要准则。其中,分批次灰度变更是降低线上风险,控制爆炸半径的关键手段。一旦发现灰度批次的服务状态异常,应及时进行回滚,而不是继续发布。然而,生产环境很多故障的发生都是由于缺乏有效的灰度监控导致的。

例如,当微服务注册中心异常时,重启发布的机器无法进行服务注册上线。由于缺乏灰度监控,前几批重启机器虽然全部注册失败,导致所有流量都集中路由到最后一批机器,但是应用监控的总体流量和耗时没有显著变化,直至最后一批机器也重启注册失败后,整个应用进入完全不可用状态,最终酿成了严重的线上故障。

在上述案例中,如果对不同机器流量进行版本打标 {"attributes.version": "v1.0.x"} ,通过链路分析对attributes.version 进行分组统计,可以清晰的区分发布前后或不同版本的流量变化和服务质量。不会出现灰度批次异常被全局监控掩盖的情况。

链路分析的约束条件

链路分析虽然使用起来非常灵活,可以满足不同场景的自定义诊断需求。但是它也有几点使用约束限制:

  1. 基于链路明细数据进行分析的成本较高。链路分析的前提是尽可能完整的上报并存储链路明细数据,如果采样率比较低导致明细数据不全,链路分析的效果就会大打折扣。为了降低全量存储成本,可以在用户集群内部署边缘数据节点,进行临时数据缓存与处理,降低跨网络上报开销。或者,在服务端进行冷热数据分离存储,热存储进行全量链路分析,冷存储进行错慢链路诊断。
  2. 后聚合分析的查询性能开销大,并发小,不适合用于告警。链路分析是实时的进行全量数据扫描与统计,查询性能开销要远大于预聚合统计指标,所以不适合进行高并发的告警查询。需要结合自定义指标功能将后聚合分析语句下推至客户端进行自定义指标统计,以便支持告警与大盘定制。
  3. 结合自定义标签埋点,才能最大化释放链路分析价值。链路分析不同于标准的应用监控预聚合指标,很多自定义场景的标签需要用户手动埋点打标,这样才能最有效的区分不同业务场景,实现精准分析。

链路分析为 APM 插上“自由的翅膀”

链路数据蕴含着丰富的价值,传统的调用链和服务视图只是固定模式下的两种经典用法,基于后聚合的链路分析可以充分释放诊断的灵活性,满足任意场景、维度的自定义诊断需求。结合自定义指标生成规则,更是可以极大的提升监控告警的精细度,为你的 APM 插上“自由的翅膀”,推荐大家一起来体验、探索和分享!

原文链接
本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/511793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes 上容器的启动顺序如何把控?

作者 | AddoZhang来源 | 云原生指北为什么要做容器启动顺序控制?我们都知道 Pod 中除了 init-container 之外,是允许添加多个容器的。类似 TektonCD 中 task 和 step 的概念就分别与 pod 和 container 对应,而 step 是按照顺序执行的。此外还…

一文说清linux system load

简介:双十一压测过程中,常见的问题之一就是load 飙高,通常这个时候业务上都有受影响,比如服务rt飙高,比如机器无法登录,比如机器上执行命令hang住等等。本文就来说说,什么是load,loa…

KubeDL 0.4.0 - Kubernetes AI 模型版本管理与追踪

简介:欢迎更多的用户试用 KubeDL,并向我们提出宝贵的意见,也期待有更多的开发者关注以及参与 KubeDL 社区的建设! 作者:陈裘凯( 求索) 前言 KubeDL 是阿里开源的基于 Kubernetes 的 AI 工作负…

上云一时爽,遇坑泪两行

如今,企业的数字化转型进程已经进入了“快车道”,各行各业基于自身业务发展与变革的需要,为整体数字化转型带来了更多要求。企业纷纷依托云原生、低代码、大数据、人工智能等技术手段积极加入这场没有硝烟的战争。 对于传统企业而言&#xf…

读研期间一定得看论文吗_读研期间各阶段的目标和任务,你明确吗?

读研期间一般都要经历上课、论文材料的收集、论文的开题、发表小论文、毕业论文的答辩、找工作或考博士等几个关键环节。在校期间,我们不仅要完成以上的全部工作,还需要不断地学习正确的价值观和人生观,学会科学的思考。如何让自己的研究生生…

Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算

简介:如何以 Serverless 的方式运行 Spring Boot 应用? 作者:西流(阿里云函数计算专家) Spring Boot 是基于 Java Spring 框架的套件,它预装了 Spring 一系列的组件,开发者只需要很少的配置即可…

从 “香农熵” 到 “告警降噪” ,如何提升告警精度?

简介:ARMS 智能降噪功能依托于 NLP 算法和信息熵理论建立模型,从大量历史告警事件中去挖掘这些事件的模式规律。当实时事件触发后,实时为每一条事件打上信息熵值与噪音识别的标签,帮助用户快速识别事件重要性。 作者:…

AI 机器学习如何不被底层资源和数据“拉胯”,听听亚马逊云科技怎么说

编辑 | 宋慧 出品 | CSDN 云计算 在人工智能从爆火到普及应用之后,数据分析今年又一次被技术界广泛关注,热度再次到达高点。 分析与咨询机构也纷纷发表与数据相关的报告,德勤在刚刚发布的《 2022年度技术趋势 》中,第一个趋势即是…

Flow vs Jenkins 实操对比,如何将Java应用快速发布至ECS

简介:Jenkins 由于其开源特性以及丰富插件能力,长久以来都是中小企业搭建 CICD 流程的首选。不过 Jenkins 存在维护成本高、配置复杂等缺点,云效 Flow 较好地解决了这些问题。 本文从一个 Java 应用部署到云服务器(ECS&#xff09…

CSS 中的简写到底有多少坑?以后不敢了...

作者 | 零一来源 | 前端印象简写(语法糖)可能给我们编码带来了很多便利,但简写也会带来一些问题,今天来讨论一下 CSS 中的简写的"爱恨情仇"为什么说是爱恨情仇呢?因为简写给我们带来了很多的便利&#xff0c…

智能巡检云监控指标的实践

简介:在真实的企业生产中,对研发和运维的同学都会面临一个十分繁复且艰难的问题,就是对指标的监控和告警。具体我枚举一些特定的问题请对号入座,看看在算力爆炸的时代能否通过算力和算法一起解决! 背景介绍 在真实的…

新常态成型,飞连联手Forrester聚焦数字化办公新体验

随着互联网技术不断发展,在企业办公领域时间与空间的限制正在逐步消弭。但是,当企业面对内外部大量的不确定因素时,以往的办公模式无论是效率、安全性还是体验等各方面都将大打折扣。而在数字时代,混合办公模式则有望成为企业办公…

聊聊我们在业务链路升级中做的数据洞察

简介:关于数据相关的词条很多,虽然有不同的定义,但是本质上是相辅相成,通常结合使用才能拿到结果。类比词条诸如 数据分析,数据挖掘, 数据洞察。本文将聊聊我们在业务链路升级中做的数据洞察。 作者 | 金铎…

阿里云佘俊泉:创新探索不停,边缘云持续为客户创造价值

简介:在12月15日上午举办的分布式云领袖论坛中,阿里云边缘云产品负责人佘俊泉先生发表了《阿里云边缘云产品创新与场景探索》的主题演讲,分享了阿里云在边缘云领域的探索和思考,如何从产品演进、技术创新、场景应用等方面助力企业…

oracle 如何迁移到 mysql_怎么将数据库从Oracle迁移到SQL Server,或从Oracle迁移到MySQL...

有时候我们有迁移数据库的需求,例如从Oracle迁移到SQL Server,或者从MySQL迁移到Oracle。很多江湖好汉一时不知如何手工操作,所幸的是Navicat提供了迁移的自动化操作界面。当然,Navicat的数据库迁移无法做到完美,一些依…

深度解析单线程的 Redis 如何做到每秒数万 QPS 的超高处理能力!

作者 | 张彦飞allen来源 | 开发内功修炼服务器端只需要单线程可以达到非常高的处理能力,Redis 就是一个非常好的例子。仅仅靠单线程就可以支撑起每秒数万 QPS 的高处理能力。今天我们就来带大家看看 Redis 核心网络模块的内部实现,学习下 Redis 是如何做…

阿里云李克:边缘云技术发展与实践

简介:7年磨砺,阿里云边缘云的技术积累和沉淀哪了些?今年全面升级后的技术形态具有什么特性?它可以成熟地赋能哪些商业化技术应用场景?阿里云资深技术专家李克带来分享。 备受关注的2021全球分布式云大会深圳站于12月1…

小程序下一破局点?钉钉小程序卡片,应用与平台的深度集成

简介:卡片技术在钉钉上的运用。 20秒了解小程序卡片 案例1:幸福大巴一键抢座 “幸福大巴”是阿里员工在域内使用的城际客运功能,但因为需要来回跳转VPN工具和H5页面,在用户体验上带来了一定的障碍 抢座流程对比: 以…

建站就用这个方法,无需购买服务器10分钟快速部署你的静态网页

简介:阿里云云开发平台重磅推出开源应用中心,聚合最热门的开源应用,让你像安装app一样快速上线一个网站。面向新人和持续活跃的开发者用户推出上线激励加油包,最高100元无门槛代金券免费送,现在体验还能够领取年轻人的…

用 Spring boot 简单搭建一个微服务项目

作者 | 桃花键神来源 | CSDN博客前言:工欲善其事,必先利其器。在对Spring Cloud各部分组件进行具体介绍之前,我们会对Spring Cloud微服务的基础Spring Boot进行介绍。Spring Boot是Spring一套快速配置开发的脚手架,可以基于Spring…