可观测
观测面与配置面共用同一套存储(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/邮件等),
与指标同源。见管理面。