add uptime back

This commit is contained in:
davidnewhall2 2019-12-03 02:26:27 -08:00
parent 9a48c771eb
commit a7259bf3f0
6 changed files with 23 additions and 15 deletions

View File

@ -115,7 +115,7 @@ func (u *promUnifi) exportClient(r report, c *unifi.Client) {
{u.Client.BytesR, gauge, c.BytesR, labelW},
})
}
r.sendone(u.Client.Info, gauge, c.Uptime, labelW)
r.send([]*metric{{u.Client.Info, gauge, c.Uptime, labelW}})
/* needs more "looking into"
{u.Client.DpiStatsApp, gauge, c.DpiStats.App, labels},
{u.Client.DpiStatsCat, gauge, c.DpiStats.Cat, labels},

View File

@ -16,7 +16,6 @@ type report interface {
add()
done()
send([]*metric)
sendone(*prometheus.Desc, prometheus.ValueType, interface{}, []string)
metrics() *metrics.Metrics
report(descs map[*prometheus.Desc]bool)
export(m *metric, v float64) prometheus.Metric
@ -34,11 +33,6 @@ func (r *Report) done() {
r.wg.Add(-one)
}
func (r *Report) sendone(desc *prometheus.Desc, valType prometheus.ValueType, val interface{}, labels []string) {
r.wg.Add(one)
r.ch <- []*metric{{desc, valType, val, labels}}
}
func (r *Report) send(m []*metric) {
r.wg.Add(one)
r.ch <- m

View File

@ -167,7 +167,10 @@ func (u *promUnifi) exportUAP(r report, d *unifi.UAP) {
u.exportSYSstats(r, labels, d.SysStats, d.SystemStats)
u.exportSTAcount(r, labels, d.UserNumSta, d.GuestNumSta)
u.exportRADtable(r, labels, d.RadioTable, d.RadioTableStats)
r.sendone(u.Device.Info, gauge, 1.0, append(labels, infoLabels...))
r.send([]*metric{
{u.Device.Info, gauge, 1.0, append(labels, infoLabels...)},
{u.Device.Uptime, gauge, d.Uptime, labels},
})
}
// udm doesn't have these stats exposed yet, so pass 2 or 6 metrics.

View File

@ -7,7 +7,8 @@ import (
// These are shared by all four device types: UDM, UAP, USG, USW
type unifiDevice struct {
Info *prometheus.Desc // uptime
Info *prometheus.Desc
Uptime *prometheus.Desc
Temperature *prometheus.Desc // sw only
TotalMaxPower *prometheus.Desc // sw only
FanLevel *prometheus.Desc // sw only
@ -34,6 +35,7 @@ func descDevice(ns string) *unifiDevice {
infoLabels := []string{"version", "model", "serial", "mac", "ip", "id", "bytes", "uptime"}
return &unifiDevice{
Info: prometheus.NewDesc(ns+"info", "Device Information", append(labels, infoLabels...), nil),
Uptime: prometheus.NewDesc(ns+"uptime", "Device Uptime", labels, nil),
Temperature: prometheus.NewDesc(ns+"temperature_celsius", "Temperature", labels, nil),
TotalMaxPower: prometheus.NewDesc(ns+"max_power_total", "Total Max Power", labels, nil),
FanLevel: prometheus.NewDesc(ns+"fan_level", "Fan Level", labels, nil),
@ -71,7 +73,10 @@ func (u *promUnifi) exportUDM(r report, d *unifi.UDM) {
u.exportWANPorts(r, labels, d.Wan1, d.Wan2)
u.exportUSGstats(r, labels, d.Stat.Gw, d.SpeedtestStatus, d.Uplink)
// Dream Machine System Data.
r.sendone(u.Device.Info, gauge, 1.0, append(labels, infoLabels...))
r.send([]*metric{
{u.Device.Info, gauge, 1.0, append(labels, infoLabels...)},
{u.Device.Uptime, gauge, d.Uptime, labels},
})
// Wireless Data - UDM (non-pro) only
if d.Stat.Ap != nil && d.VapTable != nil {
u.exportUAPstats(r, labels, d.Stat.Ap)

View File

@ -77,7 +77,10 @@ func (u *promUnifi) exportUSG(r report, d *unifi.USG) {
u.exportSYSstats(r, labels, d.SysStats, d.SystemStats)
u.exportUSGstats(r, labels, d.Stat.Gw, d.SpeedtestStatus, d.Uplink)
u.exportSTAcount(r, labels, d.UserNumSta, d.GuestNumSta, d.NumDesktop, d.UserNumSta, d.GuestNumSta)
r.sendone(u.Device.Info, gauge, 1.0, append(labels, infoLabels...))
r.send([]*metric{
{u.Device.Info, gauge, 1.0, append(labels, infoLabels...)},
{u.Device.Uptime, gauge, d.Uptime, labels},
})
}
// Gateway States

View File

@ -98,16 +98,19 @@ func (u *promUnifi) exportUSW(r report, d *unifi.USW) {
u.exportBYTstats(r, labels, d.TxBytes, d.RxBytes)
u.exportSYSstats(r, labels, d.SysStats, d.SystemStats)
u.exportSTAcount(r, labels, d.UserNumSta, d.GuestNumSta)
r.sendone(u.Device.Info, gauge, 1.0, append(labels, infoLabels...))
r.send([]*metric{
{u.Device.Info, gauge, 1.0, append(labels, infoLabels...)},
{u.Device.Uptime, gauge, d.Uptime, labels},
})
// Switch System Data.
if d.HasTemperature.Val {
r.sendone(u.Device.Temperature, gauge, d.GeneralTemperature, labels)
r.send([]*metric{{u.Device.Temperature, gauge, d.GeneralTemperature, labels}})
}
if d.HasFan.Val {
r.sendone(u.Device.FanLevel, gauge, d.FanLevel, labels)
r.send([]*metric{{u.Device.FanLevel, gauge, d.FanLevel, labels}})
}
if d.TotalMaxPower.Txt != "" {
r.sendone(u.Device.TotalMaxPower, gauge, d.TotalMaxPower, labels)
r.send([]*metric{{u.Device.TotalMaxPower, gauge, d.TotalMaxPower, labels}})
}
}