快速开始
默认禁用
指标默认禁用。要启用指标采集,请设置METRICS_ENABLED=true 并启动 GoModel:
本指南其余部分只展示要设置的变量。请通过您在上面选择的启动方式应用该变量(
.env 加 --env-file、内联 -e 参数,或在 ./bin/gomodel 之前 export),然后重启 GoModel。禁用指标
方式 1:环境变量自定义指标端点
修改默认的/metrics 路径:
配置选项
通过环境变量
通过 config.yaml
示例
生产环境配置(启用指标)
.env开发环境配置(禁用指标)
.env用于内部监控的自定义端点
config.yaml验证
检查指标是否已启用
启动服务器并查看日志消息: 指标已启用:测试指标端点
启用时:性能影响
启用指标时
- 开销极小:每个请求执行钩子约 100ns
- 内存:指标存储约 1MB(取决于基数)
- CPU:影响可忽略不计(基准测试中
<0.1%)
禁用指标时
- 零开销:不注册钩子,不进行采集
- 指标库仍会被链接,但处于非活动状态
- 推荐在非生产环境中使用,以获得最佳性能
安全注意事项
暴露指标端点
与其他 HTTP 端点一样,配置主密钥后,/metrics 端点受主密钥认证保护。如果未配置主密钥,则无需认证即可访问该端点,Prometheus 可以在没有凭据的情况下抓取指标。
如果需要进一步保护指标端点:
-
使用自定义内部路径:
-
使用网络层安全措施:
- 配置防火墙规则,仅允许 Prometheus 服务器访问
- 使用私有网络进行指标采集
- 将 Prometheus 部署在同一 VPC/网络中
-
使用带认证的反向代理:
针对空响应告警
提供商有时会返回200,但响应中没有 choices、没有输出或没有 Token 用量。gomodel_requests_total 会将这些调用计为成功,因此 GoModel 还会递增 gomodel_empty_responses_total 并记录一条警告(provider returned 200 with an empty response)。
没有 choices 的 Chat Completion 还会向客户端返回
502;如果存在故障转移目标,则会进行故障转移。有内容但没有用量的响应仍会正常返回,只是会影响用量和成本追踪。
Prometheus 配置
抓取配置
prometheus.yml使用自定义端点
故障排查
指标端点返回 404
原因:指标已禁用(默认状态)。 解决方法:.env 文件、内联的 -e METRICS_ENABLED=true 参数或 export METRICS_ENABLED=true 设置 METRICS_ENABLED=true(三种启动方式请参阅快速开始),然后重启 GoModel。
没有出现指标数据
原因:尚未发起任何请求。 解决方法:发起一些请求以生成指标:自定义端点不生效
原因:端点必须以/ 开头。
错误:
最佳实践
开发环境
- 禁用指标,以加快启动速度并减少干扰
- 仅在测试可观测性功能时启用
预发布环境
- 启用指标,以测试监控配置
- 如有安全需要,使用自定义端点
生产环境
- 启用指标,以获得完整的可观测性
- 配置 Prometheus 告警
- 使用 Grafana 看板进行可视化
- 出于安全考虑,可以使用自定义端点
- 监控指标基数,避免基数爆炸
另请参阅
- 配置:完整的环境变量参考
- config.yaml:YAML 配置参考