学习路径 05课程 4 / 8

观察服务及其用户体验

将指标、日志和链路追踪与服务目标关联起来。设计告警、数据边界,以及发现遥测缺失的检查。

实践11 分钟已审查

发布者 我们如何编写内容

检验理解导出延迟增加。采样链路显示数据库 span 耗时较长。可以得出什么结论?完成练习
导出延迟增加。采样链路显示数据库 span 耗时较长。可以得出什么结论?

你将学到什么

  • 选择能回答具体运维问题的遥测数据。
  • 区分服务症状与内部原因。
  • 保护遥测,并发现缺失或过时的证据。

从问题开始

监控检查已知条件。可观测性帮助调查系统行为,包括未预料到的故障。更多仪表板不会自动带来更好的答案。

对于虚构导出服务,从用户问题开始:获授权的用户能否在约定时间内获得正确导出?再选择能支持这个问题,并帮助解释失败的信号。

OpenTelemetry 提供遥测插桩能力和标准,可以将信号发送到兼容后端。你仍需要存储、查询、访问控制、保留策略,以及根据证据行动的人。参见可观测性基础。

关联不同形式的证据

指标衡量随时间变化的数量。日志记录事件。链路追踪将请求经过系统时的相关操作关联起来。一个 span 表示链路中的一次操作。

运维问题证据示例需要记住的局限
多少符合条件的导出失败?失败次数和符合条件的请求总数分母错误会导致误导性比率
某次导出发生了什么?包含任务 ID、结果和版本的结构化日志缺失事件会留下信息空白
时间花在了哪里?覆盖 API、队列、任务处理进程和数据库的链路采样和上下文传播中断可能隐藏部分工作
症状出现前发生了什么变化?部署和配置记录仅凭时间关系不能确定原因

对于异步工作,应安全保留提交任务与任务处理进程执行之间的关联。HTTP 202 响应可能只表示工作已接受,不能证明导出已完成。

需要行动时才告警

设置 SLO 前,先定义 SLI 及其分母。在本例中,统计在约定时长内正确完成、且符合条件的导出。定义长时间运行和已放弃的任务如何计入测量。

错误预算描述 SLO 时间窗口内允许的失败量。预算消耗速率描述失败消耗预算的速度。Google 的指南使用多个窗口,平衡及时发现与告警噪声。参见基于 SLO 的告警。

情况需要及时处理时,呼叫响应人员。紧急程度较低的工作进入队列。每项告警都需要负责人、影响说明、调查链接和响应指令。复核那些反复触发却无需行动的告警。

不要给所有服务使用同一个通用阈值。用户影响、流量、业务时段和响应能力都会影响决定。

保护遥测流水线

遥测可能包含个人数据、令牌、请求参数和机密文档。采集前定义允许字段。限制访问和保留期限。导出到外部后端前,移除秘密信息。参见敏感遥测数据。

不要把客户邮箱或唯一任务 ID 作为指标标签。不受限制的标签会增加时间序列数量,也可能暴露标识符。指标使用受控维度。将获准的关联标识符放入有访问控制的日志或链路。

也要测量流水线本身。检查数据接收失败、数据丢弃,以及最新观察距今多久。平坦的错误图表可能意味着没有错误,也可能意味着没有收到遥测。应明确展示这一区别。

调查具体故障

虚构服务对每个请求都返回 HTTP 202。队列中任务的等待时间从几秒增加到 15 分钟。任务处理进程日志显示反复发生数据库超时。采样链路显示,大部分处理时间花在数据库调用上。

这些证据支持有针对性的调查,但不能确定原因是查询变化、连接耗尽还是数据库容量。使用排查方法比较这些假设。

Taiga Monitoring 提供产品健康视图,包含可用性和浏览器体验信号。它补充基础设施与应用可观测性,而不是替代这些系统。参见 Monitoring。

完成练习

针对本课的虚构导出功能,定义一项 SLI、一项可采取行动的告警、三个允许的遥测字段和两个禁止字段。说明如何发现遥测流水线故障。

下载工作表(Markdown)
检验理解 ↑

继续学习

来源与延伸阅读

Taiga 相关阅读

上一课: 持续发现并修复漏洞