扫码一下
查看教程更方便
gorm 提供了 prometheus
插件来收集 dbstats 和用户自定义指标
import (
"gorm.io/gorm"
"gorm.io/driver/sqlite"
"gorm.io/plugin/prometheus"
)
db, err := gorm.open(sqlite.open("gorm.db"), &gorm.config{})
db.use(prometheus.new(prometheus.config{
dbname: "db1", // 使用 `dbname` 作为指标 label
refreshinterval: 15, // 指标刷新频率(默认为 15 秒)
pushaddr: "prometheus pusher address", // 如果配置了 `pushaddr`,则推送指标
startserver: true, // 启用一个 http 服务来暴露指标
httpserverport: 8080, // 配置 http 服务监听端口,默认端口为 8080 (如果您配置了多个,只有第一个 `httpserverport` 会被使用)
metricscollector: []prometheus.metricscollector {
&prometheus.mysql{
variablenames: []string{"threads_running"},
},
}, // 用户自定义指标
}))
我们可以通过 gorm prometheus 插件定义并收集自定义的指标,这需要实现 metriccollector
接口
type metricscollector interface {
metrics(*prometheus) []prometheus.collector
}
gorm 提供了一个示例,说明如何收集 mysql 状态指标,查看 prometheus.mysql
获取详情
&prometheus.mysql{
// 指标名前缀,默认为 `gorm_status_`
// 例如: threads_running 的指标名就是 `gorm_status_threads_running`
prefix: "gorm_status_",
// 拉取频率,默认使用 prometheus 的 refreshinterval
interval: 100,
// 从 show status 选择变量变量,如果不设置,则使用全部的状态变量
variablenames: []string{"threads_running"},
}