【鲲苍提效】一键追踪,高效采样,助您快速诊断精准优化

132 阅读6分钟

汉得鲲苍基础架构管理平台的核心目标是为企业的异构系统提供简单高效的一站式统一闭环管理能力,包括统一资源(集群、主机、存储等)管理、统一应用及部署管理、统一监控管理、统一服务治理,帮助企业实现更快、更好、更全面的异构系统管理。

接下来我们将会提供一系列推文,介绍鲲苍平台的使用,帮助您快速了解本平台,给您更好的使用体验。

本文为系列推文的第二十讲,将介绍如何通过鲲苍一键追踪,高效采样,助您快速诊断精准优化。

功能亮点

鲲苍调用链分析能力可以帮助您追踪每次请求,有效精准采样,高效快速识别性能瓶颈及定位系统故障,驱动产品优化,提升用户体验。

简单方便: 操作简单,方便快捷,一键启停。

精准采样: 支持各种采样配置,例如,采样率,超时采样/异常采样,自定义属性匹配过滤等等,帮助您实现有效精准采样。

高效分析: 支持按耗时、状态等条件快速检索分析,帮助您快速识别性能瓶颈及定位系统故障。

透明无侵入: 零代码修改,无需手动安装任何代理,降低接入成本,提升运维效率。

前置准备:集群及环境准备

◆ 资源管理/容器集群管理: 安装Jaeger等集群组件,用于调用链分析。

◆ 应用管理/应用部署/容器应用: 部署目标环境,一键开启调用链。

具体过程参考上一篇推文【鲲苍提效】灰度发布:助力产品无缝升级,让创新一步到位

关键场景

一、如何实现精准采样?

大规模分布式系统中,调用链的数据量可能会非常庞大,如何做到海量数据的存储与分析,这将是非常大的挑战!我们给出的答案是:既要关键链路数据(例如,超时请求、异常请求)不能漏,又要有效控制总体数据量,这样才有可能做到高效合理规划数据存储,实现快速检索分析!

1. 关键链路数据不能漏

关键链路数据一般分为如下两类:

  • 请求耗时过长,必须记录调用链,用于洞察性能瓶颈
  • 请求发生异常,必须记录调用链,用于精准定位问题

注意:如上两类关键数据一定会上报,其上报规则优先于所有其他过滤规则。

资源管理/容器集群管理/集群组件

Jaeger集群组件部署时支持灵活配置最小请求延迟(毫秒),请求超过此延迟时间,则必须采样;同时,系统默认请求发生错误时必须采样。

2. 有效控制总体数据量

鲲苍通过如下几种方式来有效控制数据量,实现更精准高效的采样:

  • 如果开启Istio,则默认关闭Istio Sidecar调用链上报,仅保留业务服务调用链上报,可以降低大概30%-40%Span数据。
  • 支持配置采样率,默认10%,可采样的数据中按照配置比例进行采样,注意,必须采样的条件不受此控制,例如,超时请求必须采样,异常请求必须采样等。
  • 支持配置一系列不采样过滤规则,进一步排除无效链路数据:
  1. 最小Span数:Span数小于配置值的请求不采样,默认2,例如,仅会产生1个Span的无效数据一般需要过滤掉。

  2. 请求路径过滤:通过配置请求路径上的正则表达式匹配,排除无效调用链数据,例如,需要排除健康检查等运维相关请求、Eureka相关请求等

  3. 自定义过滤规则:识别调用链Span中标签的特征,自定义过滤规则,支持自定义拓展配置。例如,新增 http.target 属性过滤规则 .actuator., .eureka. 。

  • 如果Jaeger使用外部存储Elasticsearch,则支持启用数据自动清理机制,例如,每天23:55自动执行数据清理,仅保留2天数据。
资源管理/容器集群管理/集群组件

Istio部署配置默认关闭Istio Sidecar调用链上报。

资源管理/容器集群管理/集群组件

Jaeger部署配置数据采样及清理机制。

3. 精准采样结果验证

操作路径:服务管理/服务中心/服务实例,选择目标集群及环境,以及目标服务,进入其详情查看服务调用链页签。

采样率验证
## 10%采样率验证
$ for i in $(seq 1 100); do curl -s -o /dev/null "http://1.2.3.4:30919/api/v1/names/random"; done

10%采样率验证,正常请求100次记录了14次:

过滤规则验证
## 不采样:请求路径过滤规则限制
$ for i in $(seq 1 100); do curl -s -o /dev/null "http://1.2.3.4:32102/actuator/health"; done

请求100次健康检查接口,由于过滤规则限制,没有采样数据。

超时请求必须采样
## 超时请求必须采样
$ for i in $(seq 1 2); do curl -s -o /dev/null "http://1.2.3.4:30919/api/v1/names/latency"; done

两次超时请求必须采样:

异常请求必须采样
## 异常请求必须采样
$ for i in $(seq 1 2); do curl -s -o /dev/null "http://1.2.3.4:30919/api/v1/names/error"; done

两次异常请求必须采样:

二、如何实现高效分析?

操作路径:服务管理/服务中心/服务实例,选择目标集群及环境,以及目标服务,进入其详情查看服务调用链页签。

1. 快速识别性能瓶颈

通过耗时条件可快速检索出耗时过长请求,帮助您快速识别性能瓶颈,同时,通过调用链详情可进一步细化分析请求中的特定耗时步骤:

2. 精准定位系统故障

通过状态条件可快速检索出异常请求,帮助您精准定位系统故障,同时,通过调用链详情可进一步细化分析异常调用Span及其异常类型、消息及堆栈等详细信息:

想了解更多效率工具实际应用场景?请关注后续一系列推文~

欢迎在评论区留言,与我们一起探讨效率工具在您业务中的应用潜力~

联系我们: