-
Notifications
You must be signed in to change notification settings - Fork 0
/
general.go
69 lines (59 loc) · 1.66 KB
/
general.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package exporter
import (
"time"
"github.com/prometheus/client_golang/prometheus"
)
// GeneralCollector collects metrics, mostly runtime, about this exporter in general.
type GeneralCollector struct {
version string
revision string
buildDate string
goVersion string
startTime time.Time
StartTime *prometheus.Desc
BuildInfo *prometheus.Desc
}
// NewGeneralCollector returns a new GeneralCollector.
func NewGeneralCollector(version string, revision string, buildDate string, goVersion string, startTime time.Time) *GeneralCollector {
return &GeneralCollector{
version: version,
revision: revision,
buildDate: buildDate,
goVersion: goVersion,
startTime: startTime,
StartTime: prometheus.NewDesc(
"database_operator_start_time",
"Unix timestamp of the start time",
nil,
nil,
),
BuildInfo: prometheus.NewDesc(
"database_operator_build_info",
"A metric with a constant '1' value labeled by version, revision, and branch from which the exporter was built.",
[]string{"version", "revision", "builddate", "goversion"},
nil,
),
}
}
// Describe sends the super-set of all possible descriptors of metrics collected by this Collector.
func (c *GeneralCollector) Describe(ch chan<- *prometheus.Desc) {
ch <- c.StartTime
ch <- c.BuildInfo
}
// Collect is called by the Prometheus registry when collecting metrics.
func (c *GeneralCollector) Collect(ch chan<- prometheus.Metric) {
ch <- prometheus.MustNewConstMetric(
c.StartTime,
prometheus.GaugeValue,
float64(c.startTime.Unix()),
)
ch <- prometheus.MustNewConstMetric(
c.BuildInfo,
prometheus.GaugeValue,
1.0,
c.version,
c.revision,
c.buildDate,
c.goVersion,
)
}