package main import ( "log" "time" "tplink/internal/tplink" "github.com/prometheus/client_golang/prometheus" ) func (cfg *config) gatherMetrics() { for { for _, host := range cfg.Hosts { d := tplink.Tplink{ Host: host, } m, err := d.GetMeterInto() if err != nil { log.Printf("[WARNING] Unable to read from device: %s: %v", host, err) continue } cfg.Prometheus.CurrentMa.With(prometheus.Labels{"device": host}).Set(float64(m.Emeter.GetRealtime.CurrentMa)) cfg.Prometheus.VoltageMv.With(prometheus.Labels{"device": host}).Set(float64(m.Emeter.GetRealtime.VoltageMv)) cfg.Prometheus.PowerMw.With(prometheus.Labels{"device": host}).Set(float64(m.Emeter.GetRealtime.PowerMw)) } time.Sleep(time.Duration(time.Second * 15)) } }