mirror of
				https://github.com/prometheus/node_exporter.git
				synced 2025-08-20 18:33:52 -07:00 
			
		
		
		
	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.
This commit is contained in:
		
							parent
							
								
									32724a10b0
								
							
						
					
					
						commit
						2b3a112b54
					
				
							
								
								
									
										47
									
								
								collector/time.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								collector/time.go
									
									
									
									
									
										Normal 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
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue