你的 SLO 已经告急;下面介绍如何在 Elastic Observability 中找出罪魁祸首

作者:来自 Elastic Roshan Gonsalkorale

当 SLO 告警检测到燃烧率( burn rate )激增时,你可以从告警详情页面沿着 SLI 逐步深入,通过异常事件 span 和追踪瀑布图( trace waterfall )定位正在消耗你的 SLO 错误预算的具体依赖项,整个调查过程无需离开当前分析流程。

Elastic Observability 中重新设计的 SLO 燃烧率( burn rate )告警详情页面,将告警与 SLI、背后的事件以及展示哪个依赖项正在消耗你的服务级别目标( SLO )错误预算的追踪关联在一起。你可以查看燃烧率何时开始上升,并排比较正常事件和异常事件的 span,然后沿着异常事件进入追踪瀑布图( trace waterfall ),定位发生故障的具体调用链路,全程无需切换工具。

本演练将使用 OpenTelemetry Demo( Astronomy Shop )展示完整的排查流程,其中一个发生故障的发货依赖导致每一次结账 SLI 都失败。你可以通过在 Elastic Observability 中运行该 Demo、为 checkout 定义一个 APM 可用性 SLO,并引入一个发生故障的依赖项来复现这一场景。

可用性

SLO 燃烧率分析现已在 Elastic Observability Serverless 中提供,并将在 9.5 中登陆 Elastic Cloud Hosted 和自托管部署。

Elastic Observability 中 SLO 燃烧率告警的前提条件

你需要一个已完成监测的服务,并在 Elastic Observability 中基于其 APM 数据定义一个 SLO。

  • 应用程序监测: 使用以下任一方式:

    • 适用于 Java、 .NET、 Node.js、 Python、 PHP、 Ruby、 Go 及其他受支持语言的 Elastic APM agent

    • Elastic Distributions of OpenTelemetry( EDOT )语言 SDK。

    • 使用 OpenTelemetry SDK,通过 EDOT Collector、 Elastic Agent、 APM Server 或托管 OTLP 端点发送 OTLP 数据。如果你使用自定义的上游 Collector 流水线,请同时包含 elasticapm connectorelasticapm processor。这两个组件随 EDOT Collector(或自定义的 EDOT 类构建)一起提供,并不是标准 OpenTelemetry Collector Contrib 发行版的一部分。有关连接方式的详细信息,请参阅上游 Collector 配置。

  • SLO 定义: 为需要保护的服务定义一个基于 APM 延迟或 APM 可用性的 SLO。保存 SLO 后,Elastic 会自动创建一条默认的燃烧率告警规则。

  • 后端: 当前支持 Elastic Observability Serverless;待 9.5 发布后,还将支持运行 Elastic Stack 9.5 的 Elastic Cloud Hosted 和自托管部署。

SLO 燃烧率分析演练:从告警定位到故障依赖项

步骤 1:在告警详情页面查看 SLO 燃烧率

从通知中打开 SLO 燃烧率告警详情页面。

图表会显示燃烧率何时开始上升,以及在当前滚动周期内还剩余多少错误预算。接着,打开与该告警关联的 SLI,并判断当前看到的是短时间的突发峰值,还是持续性的性能下降,再进一步深入分析事件。

在本示例中,checkout 的可用性 SLO 正在快速消耗错误预算,而且燃烧率是最近才开始上升的,因此问题很可能是在最近几个小时内引入的,而不是长期逐渐恶化所导致的。

步骤 2:检查导致 SLO 错误预算消耗的 SLI 错误率

在 SLI 视图中,查看驱动 SLO 的错误率。

你可以在 APM UI 中将 SLI 作为 RED 指标查看,以快速了解服务整体状况;如果需要对计入 SLO 的 span 进行过滤、比较或细分分析,则可以在 Discover 中打开 Traces。

在本示例中,checkout 的错误率已经上升,这与可用性 SLO 燃烧率的激增相吻合。

步骤 3:比较 SLI 的正常事件 span 与异常事件 span

打开 SLI 对应的事件,并在正常事件( good events )和异常事件( bad events )的 span 之间切换查看。

在打开单个追踪之前,这两组事件之间的差异通常就已经显现出来。在本示例中,异常事件具有一个正常事件所没有的共同特征,从而缩小了下一步需要排查的范围。

步骤 4:在追踪瀑布图中定位故障 span

打开几个异常事件的示例 span,并在追踪瀑布图( trace waterfall )中查看对应的追踪。

这样可以将发生故障的 span 放到完整的请求路径中进行分析,让你看到是哪一个调用环节导致了 SLI 未达标。在本示例中,发生故障的 span 来自一个下游调用,而不是 checkout 服务自身的应用程序逻辑。

步骤 5:确认哪个依赖项正在消耗你的 SLO 错误预算

打开拥有异常 span 的服务,并查看它的依赖项。

在本示例中,追踪瀑布图指向了 shipping 服务以及对 quote-old 的失败调用。发送到该依赖项的请求每次都会失败,因此导致 SLO 燃烧率上升的原因是外部依赖项,而不是 checkout 服务本身的代码。

SLO 燃烧率调查:从告警到根因

在 Elastic Observability 中,从一个 SLO 燃烧率告警开始,你可以查看燃烧率何时上升,打开关联的 SLI,比较正常事件和异常事件的 span,在追踪瀑布图中检查异常 span,并验证发生故障的依赖项,从而找到正在消耗错误预算的原因。

原文:SLO burn rate analysis: from alert to failing dependency --- Elastic Observability Labs

相关推荐
ShiXZ2135 小时前
Docker 安装 Elasticsearch 7.17.6 完整教程
elasticsearch·docker·容器
Tattoo_Welkin7 小时前
IDEA 中常用操作记载
java·elasticsearch·intellij-idea
Elasticsearch8 小时前
Elastic 机器学习预测你的磁盘何时会填满:如何让它向你发出告警
elasticsearch
Elasticsearch8 小时前
500 个服务时快 6 倍:我们如何将 Kibana APM 服务地图从 Canvas 重构到 React DOM
elasticsearch
Ai拆代码的曹操20 小时前
Git 集成:AI 代理中的版本控制工作流设计
大数据·git·elasticsearch
Elasticsearch1 天前
Elastic Observability 更新后的指标定价:业界领先的指标能力 —— 现在成本也更低!
elasticsearch
Elasticsearch1 天前
Elastic 新的指标能力将显著提升公共部门 IT 的正常运行时间
elasticsearch
Elasticsearch1 天前
Elastic 作为创始成员加入 Open Secure AI Alliance,与 NVIDIA 及行业领导者共同推动 AI 安全与保障
elasticsearch
Elasticsearch1 天前
你的 agents 一直在记录凭证:将 Elastic Agent Builder 内置的 OTel traces 转换为 Kibana 中的 token 成本
elasticsearch