识别瓶颈并建立 SLO
追踪提供了了解应用性能的窗口,以及随之而来的洞察。使用追踪,你可以发现瓶颈和潜在的优化,从而降低延迟和响应时间,提高应用吞吐量。
了解 Handy Site Corp
Handy Site Corp 是一家虚拟的网站公司,运营着一个包含用户身份验证、产品目录、订单管理、支付处理及其他服务的电商应用。
定义切合实际的 SLO
Handy Site 的工程师首先围绕延迟设定服务级别目标(SLO),以确保客户在尝试完成结账流程时获得良好的体验。为此,他们使用了从 span 数据生成的指标。
他们的服务级别目标应基于正常运营期间的历史数据设定一个切合实际的目标。一旦他们确定了服务级别目标,就会设置警报来提示未能达到目标的风险。
利用 span 指标定义你的 SLO 和 SLI
在评估了各种选项后,他们决定使用 span 指标作为服务级别指标(SLI)来衡量 SLO 的符合度。
Tempo 可以使用 metrics-generator 组件生成指标。这些指标基于传入追踪中的 span 创建,在应用流程和概览方面立即显示出实用性。这包括速率(Rate)、错误(Error)和持续时间(Duration)(简称 RED)指标。
Span 指标也使得使用示例(exemplars)变得容易。示例是聚合到指标中的一个观察值的详细示例。示例包含观察值以及可选的时间戳和任意追踪 ID,这些通常用于引用追踪。由于追踪和指标在 metrics-generator 中共存,示例可以自动添加到这些指标中,从而让你能够快速地从显示随时间变化的聚合延迟的指标跳转到代表低、中、高延迟请求的单个追踪。类似地,你可以快速地从显示随时间变化的错误率的指标跳转到单个错误追踪。
监控延迟
Handy Site 决定最关注其结账服务处理的请求延迟,并希望设定一个目标:在一个月内,99.5% 的请求应在 2 秒内完成。为了定义一个服务级别指标(SLI)来跟踪他们实现目标的进展,他们使用了带有适当标签选择器(例如 service name = checkoutservice
)的 traces_spanmetrics_latency
指标。metrics-generator 会为其生成的指标添加一组默认标签,包括 span_kind
和 status_code
。如果他们想计算每个端点或每个软件版本的结账服务延迟,可以修改 Tempo metrics-generator 的配置,将这些自定义维度作为标签添加到其 span 指标中。
完成所有这些设置后,Handy Site 打开 Grafana SLO 应用,按照设置流程为其结账服务围绕 traces_spanmetrics_latency 指标建立 SLI。他们可以在服务质量下降时收到警报,因为这直接影响最终用户体验。基于 SLO 的警报还可以确保他们不会受到嘈杂警报的困扰。只有当 SLI 的值表明团队面临未能达到 SLO 的风险时,才会触发警报。