reCoreD-UI/controllers/metrics.go

62 lines
1.4 KiB
Go
Raw Normal View History

2024-04-07 02:07:26 +00:00
package controllers
import (
"github.com/prometheus/client_golang/prometheus"
ginprometheus "github.com/zsais/go-gin-prometheus"
ormMetric "gorm.io/plugin/prometheus"
)
var (
GaugeDomainCounts = prometheus.NewGauge(prometheus.GaugeOpts{
Namespace: "recoredui",
Subsystem: "domains",
Name: "count",
Help: "domains managed in reCoreD-UI",
})
GaugeRecordCounts = prometheus.NewGaugeVec(prometheus.GaugeOpts{
Namespace: "recoredui",
Subsystem: "records",
Name: "count",
Help: "records managed in reCoreD-UI, by domain",
}, []string{"domain"})
)
2024-04-09 08:28:18 +00:00
func RegisterMetrics() {
2024-04-07 02:07:26 +00:00
prometheus.MustRegister(GaugeDomainCounts, GaugeRecordCounts)
GormMetrics := ormMetric.New(ormMetric.Config{
DBName: "recored-ui",
MetricsCollector: []ormMetric.MetricsCollector{
&ormMetric.MySQL{
VariableNames: []string{"Threads_running"},
},
},
}).Collectors
prometheus.MustRegister(GormMetrics...)
GinMetrics := ginprometheus.NewPrometheus("recoredui")
for _, v := range GinMetrics.MetricsList {
prometheus.MustRegister(v.MetricCollector)
}
}
2024-04-09 13:16:19 +00:00
func RefreshMetrics() error {
2024-04-09 08:28:18 +00:00
domainCounts, err := getDomainCounts()
2024-04-07 02:07:26 +00:00
if err != nil {
return err
}
GaugeDomainCounts.Set(domainCounts)
2024-04-09 08:28:18 +00:00
recordCounts, err := getRecordCounts()
2024-04-07 02:07:26 +00:00
if err != nil {
return err
}
for domain, counts := range recordCounts {
GaugeRecordCounts.WithLabelValues(domain).Set(counts)
}
return nil
}