Add time zone offset metric
Add the time zone and offset in seconds. Closes: https://github.com/prometheus/node_exporter/issues/2052 Signed-off-by: Ben Kochie <superq@gmail.com>
This commit is contained in:
parent
90d469805a
commit
13be860e25
|
@ -10,6 +10,7 @@ NOTE: Filesystem collector flags have been renamed. `--collector.filesystem.igno
|
||||||
|
|
||||||
* [CHANGE] Rename filesystem collector flags to match other collectors #2012
|
* [CHANGE] Rename filesystem collector flags to match other collectors #2012
|
||||||
* [FEATURE] Add flag to ignore network speed if it is unknown #1989
|
* [FEATURE] Add flag to ignore network speed if it is unknown #1989
|
||||||
|
* [ENHANCEMENT] Add time zone offset metric #2060
|
||||||
* [BUGFIX] Add ErrorLog plumbing to promhttp #1887
|
* [BUGFIX] Add ErrorLog plumbing to promhttp #1887
|
||||||
|
|
||||||
## 1.1.2 / 2021-03-05
|
## 1.1.2 / 2021-03-05
|
||||||
|
|
|
@ -24,8 +24,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type timeCollector struct {
|
type timeCollector struct {
|
||||||
desc *prometheus.Desc
|
nowDesc *prometheus.Desc
|
||||||
logger log.Logger
|
zoneDesc *prometheus.Desc
|
||||||
|
logger log.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -35,19 +36,30 @@ func init() {
|
||||||
// NewTimeCollector returns a new Collector exposing the current system time in
|
// NewTimeCollector returns a new Collector exposing the current system time in
|
||||||
// seconds since epoch.
|
// seconds since epoch.
|
||||||
func NewTimeCollector(logger log.Logger) (Collector, error) {
|
func NewTimeCollector(logger log.Logger) (Collector, error) {
|
||||||
|
const subsystem = "time"
|
||||||
return &timeCollector{
|
return &timeCollector{
|
||||||
desc: prometheus.NewDesc(
|
nowDesc: prometheus.NewDesc(
|
||||||
namespace+"_time_seconds",
|
prometheus.BuildFQName(namespace, subsystem, "seconds"),
|
||||||
"System time in seconds since epoch (1970).",
|
"System time in seconds since epoch (1970).",
|
||||||
nil, nil,
|
nil, nil,
|
||||||
),
|
),
|
||||||
|
zoneDesc: prometheus.NewDesc(
|
||||||
|
prometheus.BuildFQName(namespace, subsystem, "zone_offset_seconds"),
|
||||||
|
"System time zone offset in seconds.",
|
||||||
|
[]string{"time_zone"}, nil,
|
||||||
|
),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *timeCollector) Update(ch chan<- prometheus.Metric) error {
|
func (c *timeCollector) Update(ch chan<- prometheus.Metric) error {
|
||||||
now := float64(time.Now().UnixNano()) / 1e9
|
now := time.Now()
|
||||||
level.Debug(c.logger).Log("msg", "Return time", "now", now)
|
nowSec := float64(now.UnixNano()) / 1e9
|
||||||
ch <- prometheus.MustNewConstMetric(c.desc, prometheus.GaugeValue, now)
|
zone, zoneOffset := now.Zone()
|
||||||
|
|
||||||
|
level.Debug(c.logger).Log("msg", "Return time", "now", nowSec)
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.nowDesc, prometheus.GaugeValue, nowSec)
|
||||||
|
level.Debug(c.logger).Log("msg", "Zone offset", "offset", zoneOffset, "time_zone", zone)
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.zoneDesc, prometheus.GaugeValue, float64(zoneOffset), zone)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue