a2d184b7ec
新增 sundynix-shared/otelx:otelx.Init(ctx,服务名) 注册 W3C 传播器 + OTLP/HTTP 批量导出(默认 localhost:4318,docker 里的 Jaeger);OTEL_SDK_DISABLED=true 关导出。 Jaeger 不在线 / 导出器构建失败都不阻断启动(可观测性是增益而非依赖)。 - NATS 跨进程传播(无现成中间件):bus/trace.go 的 natsHeaderCarrier + inject/extract, PublishTask/CallTool 注入 traceparent,ConsumeTasks/ServeTool 抽出续上 → 链路跨总线连成一棵树。 - 埋点:gateway 挂 otelgin(HTTP server span,链路根);dispatcher task.execute → node.<kind>(每节点,nctx 下传使工具/LLM 挂到节点下)→ llm.stream/llm.generate; bus 自动出 tool.call(client)↔tool.serve(server) 成对跨服务 span。 - docker-compose 加 jaeger all-in-one(UI :16686,OTLP :4318)。 - 依赖修复:otlptracehttp 触发 genproto 单体(旧)vs 拆分模块 ambiguous import(milvus 拉旧版), pin genproto 至后拆分版(go.work 工作区全局生效)。 - production_readiness.md 1.1 更新为「已实现」。 验证:真实 input→retriever→agent 任务在 Jaeger 出 14 span / 3 服务的完整树, 跨 NATS(publish→consume)、跨服务(tool.call→tool.serve)均连通, 瓶颈 kb_search 692ms、llm 1597ms 一眼可见;四模块 build+vet+test 全绿。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
85 lines
2.6 KiB
YAML
85 lines
2.6 KiB
YAML
version: "3.9"
|
||
|
||
# 基础设施 — NATS 零拷贝骨干网 + 业务存储 + 向量/图数据库
|
||
services:
|
||
nats:
|
||
image: nats:2-alpine
|
||
command: ["-c", "/etc/nats/nats-server.conf"]
|
||
ports: ["4222:4222", "8222:8222"]
|
||
volumes:
|
||
- ./deploy/nats/nats-server.conf:/etc/nats/nats-server.conf:ro
|
||
- nats_data:/data/jetstream # JetStream 持久化,重启不丢任务流
|
||
|
||
postgres:
|
||
image: postgres:16-alpine
|
||
environment:
|
||
POSTGRES_USER: sundynix
|
||
POSTGRES_PASSWORD: sundynix
|
||
POSTGRES_DB: sundynix
|
||
ports: ["5432:5432"]
|
||
volumes: ["pg_data:/var/lib/postgresql/data"]
|
||
|
||
redis:
|
||
image: redis:7-alpine
|
||
ports: ["6379:6379"]
|
||
|
||
# --- Jaeger 分布式链路追踪 (all-in-one:OTLP 收集 + 存储 + 查询 UI) ---
|
||
jaeger:
|
||
image: jaegertracing/all-in-one:1.60
|
||
environment:
|
||
COLLECTOR_OTLP_ENABLED: "true" # 开启 OTLP 收集端点(各服务经此上报 span)
|
||
ports:
|
||
- "16686:16686" # Web UI:浏览器看 span 瀑布图
|
||
- "4318:4318" # OTLP/HTTP 入口(各 Go 服务默认上报到这里)
|
||
- "4317:4317" # OTLP/gRPC 入口(备用)
|
||
|
||
# --- Milvus 向量数据库 (standalone 需 etcd + minio) ---
|
||
milvus-etcd:
|
||
image: quay.io/coreos/etcd:v3.5.14
|
||
environment:
|
||
ETCD_AUTO_COMPACTION_MODE: revision
|
||
ETCD_AUTO_COMPACTION_RETENTION: "1000"
|
||
ETCD_QUOTA_BACKEND_BYTES: "4294967296"
|
||
ETCD_SNAPSHOT_COUNT: "50000"
|
||
command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
|
||
volumes: ["milvus_etcd:/etcd"]
|
||
|
||
milvus-minio:
|
||
image: minio/minio:RELEASE.2023-03-20T20-16-18Z
|
||
environment:
|
||
MINIO_ACCESS_KEY: minioadmin
|
||
MINIO_SECRET_KEY: minioadmin
|
||
command: minio server /minio_data
|
||
ports: ["9000:9000"] # 暴露给网关做文档对象存储(大文件正文)
|
||
volumes: ["milvus_minio:/minio_data"]
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
||
interval: 30s
|
||
timeout: 20s
|
||
retries: 3
|
||
|
||
milvus:
|
||
image: milvusdb/milvus:v2.4.13
|
||
command: ["milvus", "run", "standalone"]
|
||
environment:
|
||
ETCD_ENDPOINTS: milvus-etcd:2379
|
||
MINIO_ADDRESS: milvus-minio:9000
|
||
ports: ["19530:19530", "9091:9091"] # 19530=gRPC, 9091=metrics/health
|
||
volumes: ["milvus_data:/var/lib/milvus"]
|
||
depends_on: [milvus-etcd, milvus-minio]
|
||
|
||
neo4j:
|
||
image: neo4j:5-community
|
||
environment:
|
||
NEO4J_AUTH: neo4j/sundynix
|
||
ports: ["7474:7474", "7687:7687"]
|
||
volumes: ["neo4j_data:/data"]
|
||
|
||
volumes:
|
||
nats_data:
|
||
pg_data:
|
||
milvus_etcd:
|
||
milvus_minio:
|
||
milvus_data:
|
||
neo4j_data:
|