diff options
author | Sean E. Russell <ser@ser1.net> | 2020-02-18 09:44:29 -0600 |
---|---|---|
committer | Sean E. Russell <ser@ser1.net> | 2020-02-18 10:23:33 -0600 |
commit | 5ccfc7cbc6f406192e1eb20d84dcfa49814e57ad (patch) | |
tree | cfc97f26f07ac52f289b32b8379a16fcedfd05f8 /widgets/battery.go | |
parent | b61ed8b81b47d686a787e9ceda190d370991167c (diff) |
Adds widget metrics output
Doc cleanup
Missed changes
Diffstat (limited to 'widgets/battery.go')
-rw-r--r-- | widgets/battery.go | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/widgets/battery.go b/widgets/battery.go index 89620bb..fb28971 100644 --- a/widgets/battery.go +++ b/widgets/battery.go @@ -8,6 +8,7 @@ import ( "time" "github.com/distatus/battery" + "github.com/prometheus/client_golang/prometheus" ui "github.com/xxxserxxx/gotop/termui" ) @@ -15,6 +16,7 @@ import ( type BatteryWidget struct { *ui.LineGraph updateInterval time.Duration + metric []prometheus.Gauge } func NewBatteryWidget(horizontalScale int) *BatteryWidget { @@ -41,6 +43,25 @@ func NewBatteryWidget(horizontalScale int) *BatteryWidget { return self } +func (b *BatteryWidget) EnableMetric() { + bats, err := battery.GetAll() + if err != nil { + log.Printf("error setting up metrics: %v", err) + return + } + b.metric = make([]prometheus.Gauge, len(bats)) + for i, bat := range bats { + gauge := prometheus.NewGauge(prometheus.GaugeOpts{ + Namespace: "gotop", + Subsystem: "battery", + Name: fmt.Sprintf("%d", i), + }) + gauge.Set(bat.Current / bat.Full) + b.metric[i] = gauge + prometheus.MustRegister(gauge) + } +} + func makeId(i int) string { return "Batt" + strconv.Itoa(i) } @@ -57,8 +78,12 @@ func (self *BatteryWidget) update() { } for i, battery := range batteries { id := makeId(i) - percentFull := math.Abs(battery.Current/battery.Full) * 100.0 + perc := battery.Current / battery.Full + percentFull := math.Abs(perc) * 100.0 self.Data[id] = append(self.Data[id], percentFull) self.Labels[id] = fmt.Sprintf("%3.0f%% %.0f/%.0f", percentFull, math.Abs(battery.Current), math.Abs(battery.Full)) + if self.metric != nil { + self.metric[i].Set(perc) + } } } |