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