可观测性 可视化实验室

用交互式 SVG 呈现分布式追踪、Metrics、日志聚合、OpenTelemetry 等云原生可观测性核心技术。八个模块,纯原生实现。

zero-deps HTML / CSS / JS + SVG requestAnimationFrame prefers-reduced-motion
MODULE 01

分布式追踪 Trace / Span

一个请求穿过多个服务形成 Trace,由嵌套的 Span 组成树结构。下方为调用链路瀑布图,点击 Span 高亮其调用路径,播放可见请求令牌沿时间轴流动。

trace-waterfall.svg
正常 Span 错误 Span 高亮路径 请求令牌

Trace 详情

点击任意 Span 查看其服务、耗时与所属调用路径;点击“播放”观察请求沿时间轴依次激活各 Span。

Span 总数
—
服务数
—
总耗时
—
错误 Span
—
MODULE 02

Metrics 类型:Counter / Gauge / Histogram / Summary

四种核心指标类型的采集与聚合形态。Counter 单调递增、Gauge 自由波动、Histogram 分桶统计分布、Summary 计算分位数。切换类型观察实时形态。

metric-types.svg

Counter

Counter 只增不减(除非重启归零),适合请求数、错误数等累计量。PromQL 用 rate() 计算速率。

MODULE 03

结构化日志聚合

JSON 结构化日志便于聚合检索。下方为日志流,可按级别过滤、全文检索。结构化字段使日志可被索引、关联 Trace ID 并驱动告警。

log-aggregation.log

日志聚合

结构化日志把每条记录编码为 JSON,字段如 trace_id、level、service 可被 Loki / Elasticsearch 索引。全文检索匹配消息体,级别过滤快速定位 ERROR,trace_id 可反向跳转到追踪系统。

MODULE 04

OpenTelemetry 统一遥测

OpenTelemetry 用统一 API/SDK 生成 Traces、Metrics、Logs 三支柱遥测数据,经 Collector 处理后导出到任意后端。播放观察一次请求同时产出三类信号。

otel-pipeline.svg
Trace Metric Log Collector

三支柱统一

OpenTelemetry 用同一个 context(trace context / baggage)把三支柱关联起来:一条 Span、若干 Metric 数据点、若干 Log 记录共享同一 trace_id,可在后端交叉跳转。切换支柱高亮对应数据流。

信号类型
3
导出后端
3
关联 ID
trace_id
MODULE 05

采样策略:头部 vs 尾部

头部采样在 Trace 开始时按概率决定,简单但可能丢弃有价值的事故;尾部采样在 Trace 完成后根据错误/延迟等规则决策,能保留关键链路。拖动滑块调节采样率。

sampling.svg
采样保留 丢弃 错误链路 慢链路

采样对比

头部采样对每个 Trace 独立掷骰,错误链路同样可能被丢弃;尾部采样在 Span 全部到达后决策,可优先保留含错误或高延迟的 Trace,显著提升事故可观测性。

头部保留率
—
尾部保留率
—
错误链路保留
—
采样率
—
MODULE 06

服务地图 Service Map

从追踪数据自动推断服务拓扑。节点为服务,边为调用关系;边宽表示流量,颜色表示错误率。点击节点查看其上下游与延迟分布。

service-map.svg
健康 <1% 警告 1-5% 高危 >5% 选中

服务拓扑

点击节点查看该服务的入向/出向调用、P95 延迟与错误率。边宽按 QPS 缩放,颜色按错误率分级。Service Map 由 Span 的 parent/child 关系自动构建。

服务数
—
调用边
—
总 QPS
—
异常边
—
MODULE 07

异常检测与 SLO / 错误预算

基于时间序列的异常识别,叠加 SLO 与错误预算消耗。调节阈值观察检测灵敏度,播放生成新数据并注入异常点。

anomaly-slo.svg
指标序列 SLO 阈值 异常点 错误预算

异常检测 + 错误预算

SLO 定义目标可靠性(如 99.9%),错误预算 = 1 − SLO。当实际错误率消耗预算过快(burn rate 高)即触发告警。异常检测在序列偏离基线(均值 ± 阈值×σ)时标记。

异常点
—
错误预算剩余
—
Burn Rate
—
阈值 σ
—
MODULE 08

告警策略:降噪 / 聚合 / 升级

多级告警(P0-P3)经去重、聚合、抑制降噪后路由。模拟告警风暴观察分组如何压缩通知量,超时未确认则升级到下一级值班人。

alert-policy.svg
P0 致命 P1 严重 P2 警告 聚合通知

告警生命周期

原始告警进入路由后:①去重(相同标签合并)②聚合(同服务同时间窗合并)③抑制(高级别抑制低级别)④分组通知。未在 ack 超时内确认则升级。点击“触发风暴”观察降噪效果。

原始告警
0
聚合后
0
降噪率
—
已升级
0