选择信号
排查故障时,从问题或日志入手。用可用的链路检查单次执行。用指标趋势检查更长的时间段。关于活动和留存,阅读产品分析。
只采集排查需要的字段。使用稳定的服务名、操作名和指标名。不要发送凭据、支付数据或原始请求体。控制采集的数据介绍了相关的控制项。
日志
日志是应用在某个时间点留下的记录。一条有用的日志包含:- 事件在来源端发生的时间。
- 规范的严重程度。
- 项目和服务范围。
- 环境和版本。
- 有活动的链路上下文时,带有链路和 Span 标识符。
- 少量具名属性,为事件提供上下文。
occurred_at、severity、project_id、service_name、environment、release、trace_id、span_id 和 attributes 中包含这些值。把上下文放在具名属性中,不要写进消息文本。
同一视图中来自多个服务的日志,并不因此存在链路关系。只有链路上下文才能建立这种关系。
链路
一条链路包含一次请求或操作的所有 Span,每个 Span 是一次计时操作。根 Span 没有父 Span。子 Span 会标明它的父 Span。同一链路中的所有 Span 都有相同的 Trace ID 和不同的 Span ID。参见链路追踪。 在没有活动链路上下文时发送的日志、问题、操作或指标,会得到一条采集链路。这条链路只包含采集 Span,并不表示请求路径。参见采集 Span。指标
指标记录随时间变化的测量值。读取指标时,同时查看它的名称、单位、维度、项目、时间范围和间隔。LogBrew 根据指标的kind 和 temporality 确定每个指标点的 value:
例如,一个间隔内有 3 个 delta 计数器样本,值分别为
2、3 和 5,得到的指标点 value 为 10,sample_count 为 3。如果是 3 个值相同、顺序也相同的 gauge 样本,指标点 value 为 5。p95 值不是平均值,约 95% 的已记录观测值小于或等于它。
status: "ready" 表示可以使用推导出的聚合值。status: "limited" 时,查看 aggregation.limitation,并且只使用原始值。不要对 gauge 或累计数据流求和。没有指标点的间隔不等于测得的 0。查询字段的说明见查询筛选条件。
GET /api/telemetry/metrics/series 返回这些指标点。它需要 project_id、name 和 since。每个序列有一个 identity,其中包含 kind、unit 和 temporality。标识不同的序列不会合并。每个指标点还可能包含:
如果
series_limit 省略了数据量较小的序列,coverage.truncated 为 true。要把一段时间范围的指标与前一段等长的时间范围比较,运行:
问题
问题按稳定的指纹对重复出现的故障进行分组。每个问题都有严重程度、状态、发生次数、首次出现时间和最近出现时间。问题详情还可以包含异常链、堆栈帧、操作记录(Breadcrumbs)、相关日志和链路关系。last_seen_at 是该组中最新一条发生记录的时间。你选择的发生记录可能更早。两个时间都要查看。
问题的 status 为 unresolved(未解决)、resolved(已解决)或 archived(已归档)。API 响应第 1 版把 archived 显示为 ignored。第 2 版和第 3 版响应增加了 priority(high、medium 或 low)和 priority_source。第 3 版还增加了 assignee。参见状态值和优先级。
操作
操作反映产品活动。受支持的分类会把它标记为页面浏览、屏幕浏览或互动。仅凭事件名称无法设置分类。使用产品事件采集添加这类上下文。 会话不等于用户。匿名主体也不是已识别用户。严重程度值
LogBrew 接受这些别名作为输入,不区分大小写。API、CLI 和实时事件使用规范值。未知的严重程度值会被拒绝。严重程度表示记录时的紧急程度,不代表业务影响或根本原因。
用户可以更改问题或日志显示的严重程度。之后,响应中会包含一个带有
effective_severity 的 triage 对象。severity 字段保留采集时的值。
实时读取与快照读取
logbrew read 返回所选项目、时间范围和筛选条件下的快照。要读取新事件,再运行一次。连接保持期间,logbrew watch 会实时推送新的日志、问题和操作,但不推送链路或指标。连接失败并不表示项目中没有数据。
证据状态
响应会区分以下状态:已采集、缺失、已隐藏、已截断和不可用。链路证据有 4 种状态:available、not_linked、not_found 和 unavailable。它们的含义见概览,覆盖范围字段见证据的局限。较新的 SDK 不会为之前发送的事件补充字段。
排查单个项目
1
查找未解决的问题
2
读取单个问题
该命令读取已保留的问题历史。列表中使用的
--since 筛选条件在这里不适用。3
打开可用的链路
仅当所选发生记录返回了 Trace ID 时,才使用它。
4
读取相关证据
用相同的项目、服务、环境和版本筛选日志、操作和指标。不要仅凭时间关联信号。
