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

Đang mở
#236 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 1 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
45/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
docker-compose, grafana, prometheus, typescript
Lĩnh vực
backend, devops, observability

Hướng nghiên cứu

Bắt đầu bằng cách lần theo đường đi hiện có của request-logger, các chuyển đổi trạng thái của circuit-breaker và logic tiếp nhận vào hàng đợi được đề cập trong issue. Kiểm tra cách dịch vụ TypeScript cung cấp các endpoint đã xác thực và cách docker-compose cấu hình việc triển khai. Được xem là hoàn thành khi một endpoint /metrics đã xác thực và có thể được bật tùy chọn cung cấp các metric Prometheus được liệt kê, với cardinality của label được kiểm soát và không có truy vấn cơ sở dữ liệu.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

feature

背景

请求量、错误率、耗时、熔断状态、队列深度等运行数据目前只活在自建面板(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 模板随文档发布。
Ngôn ngữ chính
TypeScript
Star
4
Fork
0
Merge trung bình
10 phút
Pull request đã merge (30 ngày)
3

Chuẩn bị môi trường

  • Có Dockerfile hoặc tệp Docker Compose
  • Có mẫu pull request
  • Không có hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của g1331/AutoRouter

Tất cả issue của g1331/AutoRouter

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.