Merge pull request #867 from prometheus/beorn7/collectors
Make dbStatsCollector more DRY
This commit is contained in:
commit
a7515ca7c9
|
@ -93,10 +93,27 @@ func NewDBStatsCollector(db *sql.DB, dbName string) prometheus.Collector {
|
||||||
|
|
||||||
// Describe implements Collector.
|
// Describe implements Collector.
|
||||||
func (c *dbStatsCollector) Describe(ch chan<- *prometheus.Desc) {
|
func (c *dbStatsCollector) Describe(ch chan<- *prometheus.Desc) {
|
||||||
c.describe(ch)
|
ch <- c.maxOpenConnections
|
||||||
|
ch <- c.openConnections
|
||||||
|
ch <- c.inUseConnections
|
||||||
|
ch <- c.idleConnections
|
||||||
|
ch <- c.waitCount
|
||||||
|
ch <- c.waitDuration
|
||||||
|
ch <- c.maxIdleClosed
|
||||||
|
ch <- c.maxLifetimeClosed
|
||||||
|
c.describeNewInGo115(ch)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Collect implements Collector.
|
// Collect implements Collector.
|
||||||
func (c *dbStatsCollector) Collect(ch chan<- prometheus.Metric) {
|
func (c *dbStatsCollector) Collect(ch chan<- prometheus.Metric) {
|
||||||
c.collect(ch)
|
stats := c.db.Stats()
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.maxOpenConnections, prometheus.GaugeValue, float64(stats.MaxOpenConnections))
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.openConnections, prometheus.GaugeValue, float64(stats.OpenConnections))
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.inUseConnections, prometheus.GaugeValue, float64(stats.InUse))
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.idleConnections, prometheus.GaugeValue, float64(stats.Idle))
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.waitCount, prometheus.CounterValue, float64(stats.WaitCount))
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.waitDuration, prometheus.CounterValue, stats.WaitDuration.Seconds())
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.maxIdleClosed, prometheus.CounterValue, float64(stats.MaxIdleClosed))
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.maxLifetimeClosed, prometheus.CounterValue, float64(stats.MaxLifetimeClosed))
|
||||||
|
c.collectNewInGo115(ch, stats)
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,29 +15,16 @@
|
||||||
|
|
||||||
package collectors
|
package collectors
|
||||||
|
|
||||||
import "github.com/prometheus/client_golang/prometheus"
|
import (
|
||||||
|
"database/sql"
|
||||||
|
|
||||||
func (c *dbStatsCollector) describe(ch chan<- *prometheus.Desc) {
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
ch <- c.maxOpenConnections
|
)
|
||||||
ch <- c.openConnections
|
|
||||||
ch <- c.inUseConnections
|
func (c *dbStatsCollector) describeNewInGo115(ch chan<- *prometheus.Desc) {
|
||||||
ch <- c.idleConnections
|
|
||||||
ch <- c.waitCount
|
|
||||||
ch <- c.waitDuration
|
|
||||||
ch <- c.maxIdleClosed
|
|
||||||
ch <- c.maxIdleTimeClosed
|
ch <- c.maxIdleTimeClosed
|
||||||
ch <- c.maxLifetimeClosed
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *dbStatsCollector) collect(ch chan<- prometheus.Metric) {
|
func (c *dbStatsCollector) collectNewInGo115(ch chan<- prometheus.Metric, stats sql.DBStats) {
|
||||||
stats := c.db.Stats()
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.maxOpenConnections, prometheus.GaugeValue, float64(stats.MaxOpenConnections))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.openConnections, prometheus.GaugeValue, float64(stats.OpenConnections))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.inUseConnections, prometheus.GaugeValue, float64(stats.InUse))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.idleConnections, prometheus.GaugeValue, float64(stats.Idle))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.waitCount, prometheus.CounterValue, float64(stats.WaitCount))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.waitDuration, prometheus.CounterValue, stats.WaitDuration.Seconds())
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.maxIdleClosed, prometheus.CounterValue, float64(stats.MaxIdleClosed))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.maxIdleTimeClosed, prometheus.CounterValue, float64(stats.MaxIdleTimeClosed))
|
ch <- prometheus.MustNewConstMetric(c.maxIdleTimeClosed, prometheus.CounterValue, float64(stats.MaxIdleTimeClosed))
|
||||||
ch <- prometheus.MustNewConstMetric(c.maxLifetimeClosed, prometheus.CounterValue, float64(stats.MaxLifetimeClosed))
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,27 +15,12 @@
|
||||||
|
|
||||||
package collectors
|
package collectors
|
||||||
|
|
||||||
import "github.com/prometheus/client_golang/prometheus"
|
import (
|
||||||
|
"database/sql"
|
||||||
|
|
||||||
func (c *dbStatsCollector) describe(ch chan<- *prometheus.Desc) {
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
ch <- c.maxOpenConnections
|
)
|
||||||
ch <- c.openConnections
|
|
||||||
ch <- c.inUseConnections
|
|
||||||
ch <- c.idleConnections
|
|
||||||
ch <- c.waitCount
|
|
||||||
ch <- c.waitDuration
|
|
||||||
ch <- c.maxIdleClosed
|
|
||||||
ch <- c.maxLifetimeClosed
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *dbStatsCollector) collect(ch chan<- prometheus.Metric) {
|
func (c *dbStatsCollector) describeNewInGo115(ch chan<- *prometheus.Desc) {}
|
||||||
stats := c.db.Stats()
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.maxOpenConnections, prometheus.GaugeValue, float64(stats.MaxOpenConnections))
|
func (c *dbStatsCollector) collectNewInGo115(ch chan<- prometheus.Metric, stats sql.DBStats) {}
|
||||||
ch <- prometheus.MustNewConstMetric(c.openConnections, prometheus.GaugeValue, float64(stats.OpenConnections))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.inUseConnections, prometheus.GaugeValue, float64(stats.InUse))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.idleConnections, prometheus.GaugeValue, float64(stats.Idle))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.waitCount, prometheus.CounterValue, float64(stats.WaitCount))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.waitDuration, prometheus.CounterValue, stats.WaitDuration.Seconds())
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.maxIdleClosed, prometheus.CounterValue, float64(stats.MaxIdleClosed))
|
|
||||||
ch <- prometheus.MustNewConstMetric(c.maxLifetimeClosed, prometheus.CounterValue, float64(stats.MaxLifetimeClosed))
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue