龙蜥系统运维联盟:Kindling-OriginX 如何集成 DeepFlow 的数据增强网络故障的解释力

WBOY
发布: 2024-02-22 14:16:10
转载
911 人浏览过

龙蜥系统运维联盟:Kindling-OriginX 如何集成 DeepFlow 的数据增强网络故障的解释力

编者按:2023年,龙蜥社区正式成立系统运维联盟,该联盟由信通院、阿里云、中兴通讯、复旦大学、清华大学、浙江大学、云观秋毫、乘云数字、云杉网络、浪潮信息、统信软件及联通软件院等 12 家单位共同发起。本文转自云观秋毫,介绍系统运维联盟成员 Kindling-OriginX 通过结合 DeepFlow 完备的网络数据能力,自动化生成可解释的故障根因报告。

DeepFlow是一个开源项目,利用eBPF技术为复杂的云基础设施和云原生应用提供高度可观测性。通过eBPF技术,DeepFlow收集精细的链路追踪数据、网络和应用性能指标,具有全链路覆盖和丰富的TCP性能指标。这些功能为专业用户和网络专家提供了强大的故障诊断和问题定位支持。

Kindling-OriginX 是一款故障根因推导产品,目标是提供给用户一个可解释的故障根因报告,让用户能够直接了解故障根因,并附有根因的推理过程以便验证根因的准确性。网络故障是故障当中比较难以简单解释的,仅仅告知用户哪段网络有问题是不够的,用户需要更多指标以及图解,才能帮助用户更好的理解网络到底发生了什么故障,以及发生在哪个环节。

本文介绍 Kindling-OriginX 通过结合 DeepFlow 完备的网络数据能力,自动化生成可解释的故障根因报告。

soma-chaos 模拟网络故障

  • 针对 seat-service 注入 200ms 延时的网络模拟故障。

  • 接下来我们先使用 DeepFlow 来识别 200ms 的网络故障,并做出相应的 action。

人工最简化排障过程

步骤一:利用 Trace 系统缩小范围

在微服务环境中,当某个接口出现性能问题时,首要步骤是利用追踪系统检查哪个环节导致了慢速度,并了解具体的表现情况。

使用Tracing系统,用户可以准确定位到具体的Trace。经过分析Trace后,发现seat-service的执行时间较长,同时出现了一次长时长的config-service调用。在此情况下,联动网络指标将有助于精确定位网络问题的根源。

步骤二:利用 DeepFlow 火焰图确定故障发生在哪段网络

将故障代表 traceid 的输入 DeepFlow 在火焰图中,找到 Trace 在网络层面上的表现,然后深入分析这个火焰图,如果对火焰图比较了解,同时有具备网络知识的专家经验,是能够根据火焰图人为分析出:这个故障应该是发生在调用者也就是 seat-service 上,而且问题是发生了 syscall 到网卡的时间段,也就是容器网络时段出了问题(和故障注入是吻合的)。

(图/DeepFlow网络火焰图)

步骤三:确定容器网络到底什么网络指标异常

根据故障排查经验,用户需要查看 seat-service 与 config-service 的 pod 的网络指标。这个时候用户需要跳转至 DeepFlow 的 Pod 级别的网络指标页面。通过该页面,用户能够查看出建连有 200ms 的延时突变以及 RTT 指标有突变。

(图/DeepFlow-pod级别监控指标)

(图/DeepFlow-pod级别监控指标)

步骤四:排除可能的干扰因素

根据经验,宿主机的 CPU 被打满和带宽被占满之时,虚拟网络也会出现丢包和时延,所以要排查当时 seat-service 与 config-service 所在 node 的 CPU 以及 node 级别的带宽,确保 Node 级别资源没有饱和。

通过 k8s 命令确认了两个 pod 所在的 node 节点,然后去 DeepFlow 的 node 指标监控页面查看相应指标,发现 node 的 bps、pps 等指标均在合理范围内。

(图/通过k8s命令查找pod所在的节点)

(图/DeepFlow-node级别监控指标(client))

(图/DeepFlow-node级别监控指标(server))

由于node级别的网络指标没有出现明显异常,最终确定是seat-service的pod级别rtt指标异常。

人工排障总结

经过一系列的排查过程,最终用户是能够排查出故障的,但是对用户有以下要求:

  • 网络知识非常丰富

  • 深入理解网络火焰图

  • 熟练使用相关工具

Kindling-OriginX 如何结合 DeepFlow 指标,生产可解释的故障报告

Kindling-OriginX 针对不同的用户需求和使用场景,Kindling-OriginX 对 DeepFlow 的数据进行了加工呈现。

类比人工最简化排障过程,利用 Kindling-OriginX 的排障过程如下:

自动化分析每一条Trace

针对此时的故障,自动化分析每条 Trace,并按照故障节点对所列的 Trace 进行归集。Travel-service 是由于级联故障导致的,本文不重点论述级联故障,如果有兴趣可以参考微服务级联故障该如何处理。

Review 故障节点为 seat-service 的故障根报告

故障根因结论:

对于子请求10.244.1.254:50332->10.244.5.79:15679 rtt 指标出现 200ms 左右的延时。

故障的推理验证

由于 Kindling-OriginX 已经识别出是 seat-service 调用 config-service 的网络有问题,所以不用完全把 DeepFlow 的火焰图所有数据呈现给用户,只需要与 DeepFlow 对接,仅仅拿到 seat-service 调用 config-service 那段网络调用的相关数据即可。

利用 DeepFlow 的seat-service 调用 config-service 数据自动分析出了客户端 pod 的容器网络出现了 201ms 的延时。

Kindling-OriginX 会模拟专家分析经验,进一步关联 DeepFlow 的重传指标与RTT指标,从而确定到底是什么原因导致了 seat-service 调用 config-service 出现了延时的现象。

Kindling-OriginX 还会集成node的CPU利用率以及带宽指标,排除干扰因素。

Kindling-OriginX 将整个故障推理都在一页报告中完成,并且每个数据来源都是可信可查的。

总结

Kindling-OriginX 与 DeepFlow 都使用了 eBPF 技术,立求在不同的场景中为不同需求的用户提供灵活高效解决方案,也期待未来能看到国内有更多能力互补产品的出现。

DeepFlow 能提供非常完备的全链路网络基础数据,能够让云原生应用具有深度可观测性,对于排查网络问题非常有用。

Kindling-OriginX 是利用 eBPF 采集排障北极星指标、AI 算法和专家经验构建故障推理引擎,给用户提供可解释的根因报告。

—— 完 ——

以上是龙蜥系统运维联盟:Kindling-OriginX 如何集成 DeepFlow 的数据增强网络故障的解释力的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:mryunwei.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!