【故障定位系列】容器CPU问题引起的故障如何快速排查

简介: 生产环境容器CPU异常易引发业务卡顿或崩溃,传统排查耗时长。本文介绍通过构建实时拓扑、异常检测与数据关联,实现分钟级故障定界定位,并结合RootTalk Sandbox实战演练,快速锁定根因,提升运维效率。

原文地址:https://mp.weixin.qq.com/s/0VlIjbeEdPZUbLD389disA

当生产环境中的容器CPU出现异常时,可能会引发上层业务出现一系列问题,比如业务请求缓慢、网页卡顿甚至崩溃等,如果没有一个有效的故障定位方法,运维人员很难从海量的告警信息中快速找到根本原因并解决问题。

1 故障场景

某个时刻,几十个电商服务同时出现大量告警,如下所示。

image.png

通常的方法是,从海量的告警信息中搜索有效信息,经过几十分钟时间的排查,可以拿到如下故障结论:

  • 定界(确定故障服务节点):服务J是根因服务,影响了上游一系列的服务

  • 定位(确定服务上的具体问题):服务J的CPU使用率非常高

但是,对于生产环境中出现的问题,几十分钟的排查时间无疑是太久了。因此,我们需要一个效率更高、更准确的方案,能够在几分钟内就能找到问题根因。

2 故障定位思路分析

下面从定界和定位两个方面进行展开,讨论如何才能更高效的实现故障定位。

2.1 定界

对该故障的定界主要有如下2个难点

  • 如何确定是自身、访问组件、访问下游服务的问题?

  • 如何确定是自身还是下游服务的问题?

构建实时关系拓扑

首先需要拓扑依赖,构建出实时的关系拓扑

image.png

通过异常检测确定下游故障点

其次,对访问下游组件或者访问下游服务的异常或者错误进行异常检测,判断是否符合当前服务的故障范围。
image.png

进一步定界

一旦确定是访问下游服务导致之后,有如下3种可能:

  • 下游服务问题

  • 网络问题

  • 自身问题

判断方法是:客户端响应时间和服务端响应时间的基准对比。

image.png

  • 如果服务端的耗时也波动了,大概率就是服务端的问题;

  • 如果服务端的耗时没有波动,大概率是网络问题或者客户端的问题:

    • 通过网络丢包、重传来确定是否有网络问题;

    • 如果GC严重则大概率是客户端问题。

2.2 定位(确定服务节点上的具体问题)

当确定了当前服务是根因服务时(即下游服务并未发现问题),我们就需要分析当前服务自身的问题。
image.png

当前服务自身的问题包含如下几种类型:

  • GC问题

  • 资源问题

  • 变更问题

  • 等等

对这几种类型的问题,我们只能一一检测,并且上述只能作为辅助因素,因为没有严谨的数据能证明GC超过XXXms跟当前故障是否一定强相关。

当我们要查看该服务或者实例的资源指标时,就涉及到非常重要的数据关联操作。

image.png

不同环境下的数据如何跟APM的服务和服务实例建立关联呢?

不同环境下的数据来源 APM数据(包含serviceName、ip、pid、containerId、podName、主机host、k8s clusterId)
主机采集的进程数据(包含主机host、pid等) 和APM关联方案:主机host+pid
docker采集的容器数据 (包含主机host、containerId等) 关联方案:主机host+containerId
k8s采集的container数据(包含k8s clusterId、containerId、podName等) 关联方案:k8s clusterId+containerId

本质上就是定义一套资源标准,将不同环境下的数据指标映射到这套标准上

  • APM数据要采集足够多的关联字段,才能跟其他各种环境的资源数据进行关联

做到了上述几点,就建立起了服务实例跟各种资源指标的关联,然后就进行异常检测

CPU异常检测的难点:

异常检测为了适应各种服务的波动,通常是突变检测,即产生突变即会认为是异常,对于CPU来说,很容易被突变检测认为是异常,因此还需要一些其他的一些抗干扰的检测能力。

  • 最低的CPU阈值:低于此则不认是异常;

  • 波动率:比如至少波动30%才可能认为造成响应时间的波动。

同时对CPU波动度进行打分,波动度越高得分高,根因排序的优先级就高,因此同一个服务内的各个根因都要有打分机制,通过打分机制来决定到底哪个更适合作为根因

3 实战案例

接下来,我们采用故障演练的方式来验证。

我们到RootTalk Sandbox上进行上述故障场景的复现。

:::
RootTalk Sandbox是一个故障演练和定位的系统,可以进行多种故障场景的复现,目前开放注册。

地址:https://sandbox.databuff.com/
:::

3.1 故障注入

image.png

如上图所示进行操作,对拓扑图中的service-j::k8s这个服务的所有实例容器CPU满载的故障。

注入后等待2~3分钟,可直接点击跳转到Databuff的故障定位平台。

3.2 故障定位

登录Databuff后可以看到完整故障树,如下图。

image.png

点击根因节点

image.png

由于CPU问题会导致许多的组件访问都会出现问题,所以CPU的优先级会更高一些。

点击服务实例-CPU问题的地址链接,可以直接验证是否真的是CPU抖动上升了。
image.png

这个排查过程只需要几分钟就可完成。

相关文章
|
8月前
|
数据采集 Web App开发 JSON
从快手评论数据中挖掘舆情:Python爬虫与文本分析实战
从快手评论数据中挖掘舆情:Python爬虫与文本分析实战
什么时候使用PUT?什么时候使用POST?具体使用场景是什么?
什么时候使用PUT?什么时候使用POST?具体使用场景是什么?
1800 0
|
人工智能 计算机视觉
Photoshop2023新版本win11系统安装下载教程
ps迎来了2023的版本,这次的版本提升针对windows11做了特别优化,启动速度比win10快了很多。期盼已久的Win版 PS 2023 终于来了,小编也是通过特殊渠道搞来的,本期带来的WIN版本支持一键安装激活,一次安装永久免费使用众所周知,版本越高,需要的电脑配置也就越来越高。下面放一下2023版本的配置供大家参考。需要注意的是这些版本不再支持windows7系统,仅支持win10及以上的操作系统。
2916 0
|
7月前
|
消息中间件 存储 人工智能
官宣上线!RocketMQ for AI:企业级 AI 应用异步通信首选方案
RocketMQ 专门为 AI 场景推出了全新Lite Topic 模型,目前已在阿里云云消息队列 RocketMQ 版 5.x 系列实例上正式发布,并会逐步贡献到 Apache RocketMQ 开源社区,欢迎大家使用。
580 65
|
7月前
|
存储 弹性计算 固态存储
阿里云服务器按量付费与包年包月收费标准,云服务器最新活动价格参考
阿里云的价格一直是用户最为关注的,阿里云这两年也多次做了降价策略,阿里云根据用户的实际需求,针对云服务器收费模式推出按量付费与包年包月两种收费模式,云服务器价格表2025最新版,轻量应用服务器38元一年起,ECS云服务器2核2G3M带宽99元1年、2核4G5M带宽199元一年,新品通用算力型u2i实例4核4G1120.44元/1年起、4核8G1170.26元/1年起,九代云服务器计算型c9i实例8核16G6037.01元/1年起、通用型g9i实例8核32G7551.94元/1年起、内存型r9i实例8核64G9937.12元/1年起。叠加阿里云推出的各种优惠券还可享受满减优惠。
|
8月前
|
监控 数据可视化 数据挖掘
错题本11章
本内容涵盖项目管理核心知识,包括需求管理、WBS分解、进度与成本基准制定、质量管理、风险识别与应对、沟通及资源规划等关键过程,强调需求可跟踪性、变更控制、干系人参与及多维度风险分析,助力项目全过程科学管控。
218 0
|
10月前
|
存储 编解码 API
如何利用阿里云OSS进行图片和视频处理?
本文介绍了如何利用阿里云对象存储OSS进行图片和视频处理。内容包括OSS的基本功能、上传与管理媒体资源、图片处理(缩放、裁剪、旋转、水印等)、视频处理(转码、截图、拼接等)以及相关API的使用方法。通过OSS,用户可高效实现多媒体资源的存储与处理,适用于各类企业和开发者。
|
运维 Kubernetes 监控
什么是Kubeasz
Kubeasz(Kubernetes Easy Setup with Ansible)是一个开源项目,旨在简化Kubernetes集群的部署过程。它使用Ansible作为基础设施管理工具,通过预定义的剧本和配置模板,自动化整个K8s集群的搭建流程。以下是对Kubeasz的详细介绍: ### 一、Kubeasz的特点 1. **快速部署**:Kubeasz支持一键部署Kubernetes集群,大大节省了运维成本和时间。 2. **高可用性**:可以部署高可用的Kubernetes集群,确保系统的稳定性和可靠性。 3. **可扩展性**:支持容器化部署,可以方便地扩展集群规模,满足不同的业务需
2199 3
|
人工智能 开发框架 运维
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
Serverless MCP 运行时业界首发,函数计算支持阿里云百炼 MCP 服务!阿里云百炼发布业界首个全生命周期 MCP 服务,无需用户管理资源、开发部署、工程运维等工作,5 分钟即可快速搭建一个连接 MCP 服务的 Agent(智能体)。作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力。
 Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
|
物联网 智能硬件
智能家居系统入门:打造你的智能生活
想象一下,清晨的阳光和悠扬的音乐将你从甜美的梦乡中唤醒,窗帘自动缓缓拉开,咖啡机已经为你准备好了香浓的咖啡。这不是科幻电影的情节,而是智能家居带给我们的现实生活。本文将带你了解如何通过简单的步骤,将普通的家居环境转变为一个充满科技感的智能家庭。
460 27