Add time exporter

This simple exporter exposes the systems unix time. It's useful to
compare it to the prometheus server time and other targets to detect
clock skew.
pull/19/head
Johannes 'fish' Ziemke 2014-07-28 12:37:01 +02:00
parent 32724a10b0
commit 2b3a112b54
2 changed files with 48 additions and 1 deletions

47
collector/time.go Normal file
View File

@ -0,0 +1,47 @@
// +build !notime
package collector
import (
"time"
"github.com/golang/glog"
"github.com/prometheus/client_golang/prometheus"
)
var (
systemTime = prometheus.NewCounter(prometheus.CounterOpts{
Namespace: Namespace,
Name: "time",
Help: "System time in seconds since epoch (1970).",
})
)
type timeCollector struct {
config Config
}
func init() {
Factories["time"] = NewTimeCollector
}
// Takes a config struct and prometheus registry and returns a new Collector exposing
// the current system time in seconds since epoch.
func NewTimeCollector(config Config) (Collector, error) {
c := timeCollector{
config: config,
}
if _, err := prometheus.RegisterOrGet(systemTime); err != nil {
return nil, err
}
return &c, nil
}
func (c *timeCollector) Update() (updates int, err error) {
updates++
now := time.Now()
glog.V(1).Infof("Set time: %f", now.Unix())
systemTime.Set(float64(now.Unix()))
return updates, err
}

View File

@ -26,7 +26,7 @@ var (
configFile = flag.String("config", "node_exporter.conf", "config file.")
memProfile = flag.String("memprofile", "", "write memory profile to this file")
listeningAddress = flag.String("listen", ":8080", "address to listen on")
enabledCollectors = flag.String("enabledCollectors", "attributes,diskstats,filesystem,loadavg,meminfo,stat,netdev", "comma-seperated list of collectors to use")
enabledCollectors = flag.String("enabledCollectors", "attributes,diskstats,filesystem,loadavg,meminfo,stat,time,netdev", "comma-seperated list of collectors to use")
printCollectors = flag.Bool("printCollectors", false, "If true, print available collectors and exit")
interval = flag.Duration("interval", 60*time.Second, "refresh interval")