Skip to content

feat(observability): Prometheus /metrics 端点——接入 Grafana 生态 #236

Description

@g1331

背景

请求量、错误率、耗时、熔断状态、队列深度等运行数据目前只活在自建面板(dashboard / live pulse / rankings)里,无法接入外部监控生态。生产环境已是 docker-compose 部署,加一个 Prometheus 抓取端点即可挂进 Grafana / Alertmanager 等标准工具链。

方案:/metrics 端点

暴露 Prometheus 文本格式的指标端点,首批指标:

指标 类型 标签
请求总数 / 错误数 counter upstream, capability, status_class
请求耗时 / 首字节耗时 histogram upstream, capability
token 用量(输入/输出) counter upstream, model
熔断器状态 gauge upstream
上游健康状态 gauge upstream
并发占用 / 队列深度 gauge upstream
累计花费 counter upstream

设计要点

  • 指标在进程内存中累计(prom-client 或等价轻量实现),不查库,抓取零成本;进程重启计数归零符合 Prometheus counter 语义。
  • 埋点挂在现有链路节点:request-logger 记录处、熔断状态迁移处、队列准入处,避免新增旁路统计。
  • 端点鉴权:Bearer token(可复用 ADMIN_TOKEN 或独立的 METRICS_TOKEN 环境变量),未配置时端点关闭。
  • 标签基数控制:model 标签需白名单或截断口径,防止任意请求模型名撑爆基数。
  • 上游标签用 ID+名称,注意与“下游响应不携带上游身份”的约束区分——metrics 是管理侧出口,不受该约束,但需鉴权保护。

后续可扩展(本期不做)

  • OpenAI 兼容的 usage/dashboard API,供第三方用量统计工具直读。
  • Grafana dashboard JSON 模板随文档发布。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature新功能请求

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions