QihuAI Design
04a0641202
feat(otel #876): 双 Claw 强制标签 + 入口接线 + Grafana 双 Claw 对比看板
#876 OpenTelemetry 可观测(双 Claw 标签):
- app/core/otel.py: 新增 set_otel_ctx/get_otel_ctx(ContextVar 三元组 tenant_id+claw_type+
trace_id);current_span_cm 自动注入双 Claw 强制标签,全部 13 个 span 调用点零签名侵入带维度;
record_span_metrics 指标维度补 tenant_id+claw_type(trace_id 因高基数不计入指标标签)。
- app/core/llm_router.py: set_route_ctx 桥接转调 set_otel_ctx(单次入口注入双端共享:
路由上下文 + OTel 标签),失败安全。
- app/api/chat.py: send_message 与 send_message_stream 入口注入 set_route_ctx(web),
stream 经 asyncio.create_task 子协程自动传播 contextvars,使 _send_message_core 内
所有 span 均带 tenant_id+claw_type。
- app/api/im_llm.py: _call_real_llm 入口最早注入 set_route_ctx(im_wechat),并显式开启
im.send_message span(此前 IM Claw 完全无 span,Grafana 无 IM 数据点),finally 关闭。
- tests/test_dual_claw.py: R-DUAL-6 由 skip 转为确定性断言(Web/IM 双 Claw span 必带
tenant_id+claw_type),作为持续哨兵。
- 交付 Grafana 双 Claw 对比看板 JSON(aiflow_span_* / aiflow_llm_route_total 按 claw_type
分组:P50/P95 延迟、成功率、QPS、租户健康 Top10)。Alloy OTLP 仅桥接 metrics→Prometheus,
trace 无 pipeline(#800 已压制 UNIMPLEMENTED 噪声),看板基于 metrics 出图。
safe-align: 仅复制 5 个 git-tracked 文件,未触碰 secrets/venv/node_modules/caches。本地提交不 push。
2026-08-04 13:49:34 +08:00
..
2026-07-31 08:51:15 +08:00
2026-07-11 11:40:39 +08:00
2026-07-14 08:21:56 +08:00
2026-07-18 08:06:37 +08:00
2026-07-31 08:51:15 +08:00
2026-07-14 18:49:27 +08:00
2026-07-31 08:51:15 +08:00
2026-07-31 08:51:15 +08:00
2026-07-19 15:27:15 +08:00
2026-07-26 08:35:42 +08:00
2026-07-25 12:16:39 +08:00
2026-07-25 12:16:39 +08:00
2026-07-31 08:51:15 +08:00
2026-08-04 13:16:30 +08:00
2026-07-27 16:55:48 +08:00
2026-07-23 05:42:48 +08:00
2026-08-04 13:49:34 +08:00
2026-07-02 14:40:46 +08:00
2026-07-26 00:35:35 +08:00
2026-08-04 11:14:02 +08:00
2026-08-04 13:49:34 +08:00
2026-07-26 00:35:35 +08:00
2026-07-26 00:35:35 +08:00
2026-07-02 14:40:46 +08:00
2026-07-02 14:40:46 +08:00
2026-07-27 22:27:56 +08:00
2026-07-27 22:27:56 +08:00
2026-07-15 17:05:00 +08:00
2026-07-23 05:42:48 +08:00