Table of Contents

可观测

观测面与配置面共用同一套存储(Tier)——无外部时序库依赖。本页按「健康→指标→链路→事件→导出」 五层给出消费入口。

健康车道(管理口·探针免鉴权)

端点 语义 响应
/healthz liveness——进程活着 恒 200
/readyz 存储+raft 双确认 200 {ready:true, commitIndex} / 503 {ready:false, degradedReason}

DP 节点的 /readyz 未追平复制流=503——这是负载均衡摘除流量的正确信号。

指标(Prometheus)

管理口 /metrics(Bearer 闸后)——自研 Prometheus 文本协议写出,零第三方 SDK:

  • 带标签序列:tenant/route/status-code 三维(LabeledMetricsCollector)+延迟直方图;
  • 基数闸 top-N:高基数路由序列按流量取 top-N(metrics.topN 旋钮),防标签爆炸;
  • 上游/限流执法点埋点:upstream 与 rate-limit 的执法结果可见;
  • H3 握手:quic.handshake_ok/quic.handshake_fail。

worker.json 装配:

{ "metrics": { "shards": 4, "topN": 100 } }

shards: 0=关闭每路由序列(只剩全局面)。

链路追踪

每步一手 span:执行器为管线每个步骤单点埋点(内置步骤与插件步骤统一), span 环存于节点内存、近窗可查:

traffic-worker trace query --route demo-api      # 近窗 span
traffic-worker trace get <traceId>               # 按 traceId 反查(UI 请求探针同面)

四级定位链:TraceId → span 瀑布 → step 定位 → 处置事件。 worker.json 开关:

{ "tracing": { "enabled": true, "sampleRatio": 1.0,
               "otlp": "http://otel-collector:4317", "otlpServiceName": "traffic-dp1" } }

sampleRatio 全量/采样;otlp 配置即启用 OTLP 导出(可选包注入——不部署 导出包=导出能力结构化关闭,内置 JSON 导出兜底)。

实时事件(SSE)

管理口 SSE 流(Bearer 鉴权):

流 内容
events 数据面事件(target.unhealthy/healthy、circuit.open/reopen、discovery.changed…)
audit stream 管理操作审计流(audit tail --follow 的服务端面)
publish progress 发布任务进度
watch KV Watch 外部只读订阅

集群面观测

traffic-worker cluster status     # 角色/Leader/复制水位/健康/成员最后心跳
traffic-worker metrics query --route demo-api --agg p99
traffic-worker metrics circuit    # per-路由熔断态(closed|open|half-open)
traffic-worker metrics errors     # per-status-code 计数(全量非采样)
traffic-worker metrics steps      # step 维度聚合(count/errors/p99——世代对比)

警报

告警规则/通道/静音走 alert 命令族(规则评估→通道通知——webhook/邮件等), 与指标同源。见管理面。