全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

GORM Prometheus 监控插件

Prometheus 插件可为 GORM 提供数据库性能监控能力,自动采集连接池状态与查询延迟等指标。

插件功能

监控指标

插件自动暴露以下 Prometheus 指标:

指标名称说明
gorm_connections_open当前打开的连接数
gorm_connections_in_use正在使用的连接数
gorm_wait_count等待连接的请求数
gorm_query_duration_seconds查询耗时分布
gorm_query_total查询总数

集成步骤

安装依赖

Bash
go get github.com/dmitryliden/gorm-prometheus

注册插件

Go
import "github.com/dmitryliden/gorm-prometheus"

db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    panic(err)
}

// 注册 Prometheus 插件
db.Use(prometheus.New(prometheus.Config{
    DBName:          "user_db",
    RefreshInterval: 15, // 指标刷新间隔(秒)
}))

暴露指标端点

Go
import "github.com/prometheus/client_golang/prometheus/promhttp"

http.Handle("/metrics", promhttp.Handler())
http.ListenAndServe(":8080", nil)

配置参数

Config 结构体

Go
type Config struct {
    DBName          string        // 数据库名称,用于区分多数据源
    RefreshInterval int           // 连接池指标刷新间隔(秒)
    StartServer     bool          // 是否自动启动 HTTP 服务
    ServerAddr      string        // HTTP 服务地址
    MetricsPath     string        // 指标暴露路径
}

推荐配置

Go
db.Use(prometheus.New(prometheus.Config{
    DBName:          "main_db",
    RefreshInterval: 10,
    StartServer:     false, // 推荐复用现有 metrics 端点
}))

监控实践

Grafana 看板配置

常用查询语句:

promql
# 平均查询延迟
rate(gorm_query_duration_seconds_sum[5m]) / rate(gorm_query_duration_seconds_count[5m])

# 连接池使用率
gorm_connections_in_use / gorm_connections_open

# 每秒查询数
rate(gorm_query_total[1m])

告警规则

YAML
- alert: GormHighLatency
  expr: rate(gorm_query_duration_seconds_sum[5m]) / rate(gorm_query_duration_seconds_count[5m]) > 0.5
  for: 5m
  annotations:
    summary: "GORM 查询延迟过高"

注意事项

多数据源场景需为每个数据库实例单独注册插件,DBName 不能重复。

RefreshInterval 不宜过小,避免频繁采集影响性能。

生产环境建议复用现有 /metrics 端点,避免插件启动额外端口。

要点总结

  • Prometheus 插件自动采集 GORM 连接池与查询指标
  • 通过 db.Use() 注册,配置 DBName 与刷新间隔
  • 指标包括连接数、等待队列、查询延迟与总数
  • 配合 Grafana 可实现可视化监控与告警
  • 多数据源需分别注册,注意 DBName 唯一性

存放路径:D:\git2\jwdev\articles\GORM\进阶\插件系统\Prometheus 监控插件.md

📝 发现内容有误?点击此处直接编辑

← 上一篇 GORM Jaeger 链路追踪插件
下一篇 → GORM 插件注册与使用
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库