From 75320295378e8389f8b5165fa495497ea8148364 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Mon, 2 Dec 2019 18:33:29 +0100 Subject: [PATCH 1/8] Move excess device labels to info metric Move some of the excess device inventory labels to an "info" metric. This reduces query output noise and indexing overhead. These labels can still be used for filtering with a `group_left` query. Signed-off-by: Ben Kochie --- pkg/promunifi/uap.go | 16 +++++++++------- pkg/promunifi/udm.go | 9 +++++++-- pkg/promunifi/usg.go | 4 +++- pkg/promunifi/usw.go | 10 ++++++---- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/pkg/promunifi/uap.go b/pkg/promunifi/uap.go index daa19911..7350c01a 100644 --- a/pkg/promunifi/uap.go +++ b/pkg/promunifi/uap.go @@ -82,8 +82,8 @@ type uap struct { } func descUAP(ns string) *uap { - // labels := []string{"ip", "version", "model", "serial", "type", "mac", "site_name", "name"} - labelA := []string{"stat", "site_name", "name"} // stat + labels[6:] + // labels := []string{"type", "site_name", "name"} + labelA := []string{"stat", "site_name", "name"} // stat + labels[1:] labelV := []string{"vap_name", "bssid", "radio", "radio_name", "essid", "usage", "site_name", "name"} labelR := []string{"radio_name", "radio", "site_name", "name"} return &uap{ @@ -164,9 +164,11 @@ func descUAP(ns string) *uap { } func (u *promUnifi) exportUAP(r report, d *unifi.UAP) { - labels := []string{d.IP, d.Version, d.Model, d.Serial, d.Type, d.Mac, d.SiteName, d.Name} + labels := []string{d.Type, d.SiteName, d.Name} + infoLabels := []string{d.IP, d.Version, d.Model, d.Serial, d.Mac} // Wireless System Data. r.send([]*metric{ + {u.Device.Info, prometheus.GaugeValue, 1.0, append(labels, infoLabels...)}, {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, @@ -195,8 +197,8 @@ func (u *promUnifi) exportUAP(r report, d *unifi.UAP) { func (u *promUnifi) exportUAPstats(r report, labels []string, ap *unifi.Ap) { // labelA := append([]string{"all"}, labels[2:]...) - labelU := append([]string{"user"}, labels[6:]...) - labelG := append([]string{"guest"}, labels[6:]...) + labelU := append([]string{"user"}, labels[1:]...) + labelG := append([]string{"guest"}, labels[1:]...) r.send([]*metric{ /* // all {u.UAP.ApWifiTxDropped, prometheus.CounterValue, ap.WifiTxDropped, labelA}, @@ -253,7 +255,7 @@ func (u *promUnifi) exportVAPtable(r report, labels []string, vt unifi.VapTable) if !v.Up.Val { continue } - labelV := append([]string{v.Name, v.Bssid, v.Radio, v.RadioName, v.Essid, v.Usage}, labels[6:]...) + labelV := append([]string{v.Name, v.Bssid, v.Radio, v.RadioName, v.Essid, v.Usage}, labels[1:]...) r.send([]*metric{ {u.UAP.VAPCcq, prometheus.GaugeValue, float64(v.Ccq) / 1000.0, labelV}, @@ -300,7 +302,7 @@ func (u *promUnifi) exportVAPtable(r report, labels []string, vt unifi.VapTable) func (u *promUnifi) exportRadtable(r report, labels []string, rt unifi.RadioTable, rts unifi.RadioTableStats) { // radio table for _, p := range rt { - labelR := append([]string{p.Name, p.Radio}, labels[6:]...) + labelR := append([]string{p.Name, p.Radio}, labels[1:]...) r.send([]*metric{ {u.UAP.RadioCurrentAntennaGain, prometheus.GaugeValue, p.CurrentAntennaGain, labelR}, {u.UAP.RadioHt, prometheus.GaugeValue, p.Ht, labelR}, diff --git a/pkg/promunifi/udm.go b/pkg/promunifi/udm.go index ef251bd4..fa7cbb35 100644 --- a/pkg/promunifi/udm.go +++ b/pkg/promunifi/udm.go @@ -7,6 +7,7 @@ import ( // These are shared by all four device types: UDM, UAP, USG, USW type unifiDevice struct { + Info *prometheus.Desc Uptime *prometheus.Desc Temperature *prometheus.Desc // sw only TotalMaxPower *prometheus.Desc // sw only @@ -36,8 +37,10 @@ type unifiDevice struct { } func descDevice(ns string) *unifiDevice { - labels := []string{"ip", "version", "model", "serial", "type", "mac", "site_name", "name"} + labels := []string{"type", "site_name", "name"} + infoLabels := []string{"ip", "version", "model", "serial", "mac"} return &unifiDevice{ + Info: prometheus.NewDesc(ns+"info", "Device Information", append(labels, infoLabels...), nil), Uptime: prometheus.NewDesc(ns+"uptime", "Uptime", labels, nil), Temperature: prometheus.NewDesc(ns+"temperature_celsius", "Temperature", labels, nil), TotalMaxPower: prometheus.NewDesc(ns+"max_power_total", "Total Max Power", labels, nil), @@ -69,9 +72,11 @@ func descDevice(ns string) *unifiDevice { // UDM is a collection of stats from USG, USW and UAP. It has no unique stats. func (u *promUnifi) exportUDM(r report, d *unifi.UDM) { - labels := []string{d.IP, d.Version, d.Model, d.Serial, d.Type, d.Mac, d.SiteName, d.Name} + labels := []string{d.Type, d.SiteName, d.Name} + infoLabels := []string{d.IP, d.Version, d.Model, d.Serial, d.Mac} // Dream Machine System Data. r.send([]*metric{ + {u.Device.Info, prometheus.GaugeValue, 1.0, append(labels, infoLabels...)}, {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, diff --git a/pkg/promunifi/usg.go b/pkg/promunifi/usg.go index 2aaa6e26..28b528e1 100644 --- a/pkg/promunifi/usg.go +++ b/pkg/promunifi/usg.go @@ -71,9 +71,11 @@ func descUSG(ns string) *usg { } func (u *promUnifi) exportUSG(r report, d *unifi.USG) { - labels := []string{d.IP, d.Version, d.Model, d.Serial, d.Type, d.Mac, d.SiteName, d.Name} + labels := []string{d.Type, d.SiteName, d.Name} + infoLabels := []string{d.IP, d.Version, d.Model, d.Serial, d.Mac} // Gateway System Data. r.send([]*metric{ + {u.Device.Info, prometheus.GaugeValue, 1.0, append(labels, infoLabels...)}, {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, diff --git a/pkg/promunifi/usw.go b/pkg/promunifi/usw.go index 8d6a1bdf..5048c807 100644 --- a/pkg/promunifi/usw.go +++ b/pkg/promunifi/usw.go @@ -47,8 +47,8 @@ type usw struct { func descUSW(ns string) *usw { pns := ns + "port_" - // labels := []string{"ip", "version", "model", "serial", "type", "mac", "site_name", "name"} - labelS := []string{"site_name", "name"} // labels[6:] + // labels := []string{"type", "site_name", "name"} + labelS := []string{"site_name", "name"} // labels[1:] labelP := []string{"port_id", "port_num", "port_name", "port_mac", "port_ip", "site_name", "name"} return &usw{ SwRxPackets: prometheus.NewDesc(ns+"switch_receive_packets_total", "Switch Packets Received Total", labelS, nil), @@ -91,7 +91,8 @@ func descUSW(ns string) *usw { } func (u *promUnifi) exportUSW(r report, d *unifi.USW) { - labels := []string{d.IP, d.Version, d.Model, d.Serial, d.Type, d.Mac, d.SiteName, d.Name} + labels := []string{d.Type, d.SiteName, d.Name} + infoLabels := []string{d.IP, d.Version, d.Model, d.Serial, d.Mac} if d.HasTemperature.Val { r.send([]*metric{{u.Device.Temperature, prometheus.GaugeValue, d.GeneralTemperature, labels}}) } @@ -101,6 +102,7 @@ func (u *promUnifi) exportUSW(r report, d *unifi.USW) { // Switch System Data. r.send([]*metric{ + {u.Device.Info, prometheus.GaugeValue, 1.0, append(labels, infoLabels...)}, {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalMaxPower, prometheus.GaugeValue, d.TotalMaxPower, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, @@ -123,7 +125,7 @@ func (u *promUnifi) exportUSW(r report, d *unifi.USW) { } func (u *promUnifi) exportUSWstats(r report, labels []string, sw *unifi.Sw) { - labelS := labels[6:] + labelS := labels[1:] r.send([]*metric{ {u.USW.SwRxPackets, prometheus.CounterValue, sw.RxPackets, labelS}, {u.USW.SwRxBytes, prometheus.CounterValue, sw.RxBytes, labelS}, From 3350ba244f92f2377e56e4f1189c686e332f5bd8 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Mon, 2 Dec 2019 22:28:51 +0100 Subject: [PATCH 2/8] Use explicit label items rather than a cut of the slice. Signed-off-by: Ben Kochie --- pkg/promunifi/uap.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/promunifi/uap.go b/pkg/promunifi/uap.go index 7350c01a..7cae0c4a 100644 --- a/pkg/promunifi/uap.go +++ b/pkg/promunifi/uap.go @@ -197,8 +197,8 @@ func (u *promUnifi) exportUAP(r report, d *unifi.UAP) { func (u *promUnifi) exportUAPstats(r report, labels []string, ap *unifi.Ap) { // labelA := append([]string{"all"}, labels[2:]...) - labelU := append([]string{"user"}, labels[1:]...) - labelG := append([]string{"guest"}, labels[1:]...) + labelU := []string{"user", labels[1], labels[2]} + labelG := []string{"guest", labels[1], labels[2]} r.send([]*metric{ /* // all {u.UAP.ApWifiTxDropped, prometheus.CounterValue, ap.WifiTxDropped, labelA}, @@ -255,7 +255,7 @@ func (u *promUnifi) exportVAPtable(r report, labels []string, vt unifi.VapTable) if !v.Up.Val { continue } - labelV := append([]string{v.Name, v.Bssid, v.Radio, v.RadioName, v.Essid, v.Usage}, labels[1:]...) + labelV := []string{v.Name, v.Bssid, v.Radio, v.RadioName, v.Essid, v.Usage, labels[1], labels[2]} r.send([]*metric{ {u.UAP.VAPCcq, prometheus.GaugeValue, float64(v.Ccq) / 1000.0, labelV}, @@ -302,7 +302,7 @@ func (u *promUnifi) exportVAPtable(r report, labels []string, vt unifi.VapTable) func (u *promUnifi) exportRadtable(r report, labels []string, rt unifi.RadioTable, rts unifi.RadioTableStats) { // radio table for _, p := range rt { - labelR := append([]string{p.Name, p.Radio}, labels[1:]...) + labelR := []string{p.Name, p.Radio, labels[1], labels[2]} r.send([]*metric{ {u.UAP.RadioCurrentAntennaGain, prometheus.GaugeValue, p.CurrentAntennaGain, labelR}, {u.UAP.RadioHt, prometheus.GaugeValue, p.Ht, labelR}, From fb3fccad6f3c24688e6c18a988d41eb7b6d29ad7 Mon Sep 17 00:00:00 2001 From: Ben Kochie Date: Mon, 2 Dec 2019 23:34:49 +0100 Subject: [PATCH 3/8] Remove IP address from device info label. Signed-off-by: Ben Kochie --- pkg/promunifi/uap.go | 2 +- pkg/promunifi/udm.go | 4 ++-- pkg/promunifi/usg.go | 4 ++-- pkg/promunifi/usw.go | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/promunifi/uap.go b/pkg/promunifi/uap.go index 7cae0c4a..8711bb4f 100644 --- a/pkg/promunifi/uap.go +++ b/pkg/promunifi/uap.go @@ -165,7 +165,7 @@ func descUAP(ns string) *uap { func (u *promUnifi) exportUAP(r report, d *unifi.UAP) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.IP, d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} // Wireless System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, 1.0, append(labels, infoLabels...)}, diff --git a/pkg/promunifi/udm.go b/pkg/promunifi/udm.go index fa7cbb35..78899ed8 100644 --- a/pkg/promunifi/udm.go +++ b/pkg/promunifi/udm.go @@ -38,7 +38,7 @@ type unifiDevice struct { func descDevice(ns string) *unifiDevice { labels := []string{"type", "site_name", "name"} - infoLabels := []string{"ip", "version", "model", "serial", "mac"} + infoLabels := []string{"version", "model", "serial", "mac"} return &unifiDevice{ Info: prometheus.NewDesc(ns+"info", "Device Information", append(labels, infoLabels...), nil), Uptime: prometheus.NewDesc(ns+"uptime", "Uptime", labels, nil), @@ -73,7 +73,7 @@ func descDevice(ns string) *unifiDevice { // UDM is a collection of stats from USG, USW and UAP. It has no unique stats. func (u *promUnifi) exportUDM(r report, d *unifi.UDM) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.IP, d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} // Dream Machine System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, 1.0, append(labels, infoLabels...)}, diff --git a/pkg/promunifi/usg.go b/pkg/promunifi/usg.go index 28b528e1..a33cb7e2 100644 --- a/pkg/promunifi/usg.go +++ b/pkg/promunifi/usg.go @@ -36,7 +36,7 @@ type usg struct { } func descUSG(ns string) *usg { - // labels := []string{"ip", "version", "model", "serial", "type", "mac", "site_name", "name"} + // labels := []string{"version", "model", "serial", "type", "mac", "site_name", "name"} // labelWan := append([]string{"port"}, labels[6:]...) labels := []string{"port", "site_name", "name"} return &usg{ @@ -72,7 +72,7 @@ func descUSG(ns string) *usg { func (u *promUnifi) exportUSG(r report, d *unifi.USG) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.IP, d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} // Gateway System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, 1.0, append(labels, infoLabels...)}, diff --git a/pkg/promunifi/usw.go b/pkg/promunifi/usw.go index 5048c807..94b810aa 100644 --- a/pkg/promunifi/usw.go +++ b/pkg/promunifi/usw.go @@ -92,7 +92,7 @@ func descUSW(ns string) *usw { func (u *promUnifi) exportUSW(r report, d *unifi.USW) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.IP, d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} if d.HasTemperature.Val { r.send([]*metric{{u.Device.Temperature, prometheus.GaugeValue, d.GeneralTemperature, labels}}) } From bf74687f42e74378883ae70dafa5d8e15b62b17d Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Mon, 2 Dec 2019 18:38:58 -0800 Subject: [PATCH 4/8] fixes --- pkg/promunifi/uap.go | 16 +++++++++------- pkg/promunifi/udm.go | 9 +++++++-- pkg/promunifi/usg.go | 12 +++++++----- pkg/promunifi/usw.go | 13 ++++++++----- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/pkg/promunifi/uap.go b/pkg/promunifi/uap.go index 3aa107ae..c537632e 100644 --- a/pkg/promunifi/uap.go +++ b/pkg/promunifi/uap.go @@ -80,8 +80,8 @@ type uap struct { } func descUAP(ns string) *uap { - // labels := []string{"ip", "version", "model", "serial", "type", "mac", "site_name", "name"} - labelA := []string{"stat", "site_name", "name"} // stat + labels[6:] + // labels := []string{"type", "site_name", "name"} + labelA := []string{"stat", "site_name", "name"} // stat + labels[1:] labelV := []string{"vap_name", "bssid", "radio", "radio_name", "essid", "usage", "site_name", "name"} labelR := []string{"radio_name", "radio", "site_name", "name"} return &uap{ @@ -160,9 +160,11 @@ func descUAP(ns string) *uap { } func (u *promUnifi) exportUAP(r report, d *unifi.UAP) { - labels := []string{d.IP, d.Version, d.Model, d.Serial, d.Type, d.Mac, d.SiteName, d.Name} + labels := []string{d.Type, d.SiteName, d.Name} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} // Wireless System Data. r.send([]*metric{ + {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, @@ -190,8 +192,8 @@ func (u *promUnifi) exportUAP(r report, d *unifi.UAP) { func (u *promUnifi) exportUAPstats(r report, labels []string, ap *unifi.Ap) { // labelA := append([]string{"all"}, labels[2:]...) - labelU := append([]string{"user"}, labels[6:]...) - labelG := append([]string{"guest"}, labels[6:]...) + labelU := []string{"user", labels[1], labels[2]} + labelG := []string{"guest", labels[1], labels[2]} r.send([]*metric{ /* // all {u.UAP.ApWifiTxDropped, prometheus.CounterValue, ap.WifiTxDropped, labelA}, @@ -248,7 +250,7 @@ func (u *promUnifi) exportVAPtable(r report, labels []string, vt unifi.VapTable) if !v.Up.Val { continue } - labelV := append([]string{v.Name, v.Bssid, v.Radio, v.RadioName, v.Essid, v.Usage}, labels[6:]...) + labelV := []string{v.Name, v.Bssid, v.Radio, v.RadioName, v.Essid, v.Usage, labels[1], labels[2]} r.send([]*metric{ {u.UAP.VAPCcq, prometheus.GaugeValue, float64(v.Ccq) / 1000.0, labelV}, @@ -295,7 +297,7 @@ func (u *promUnifi) exportVAPtable(r report, labels []string, vt unifi.VapTable) func (u *promUnifi) exportRadtable(r report, labels []string, rt unifi.RadioTable, rts unifi.RadioTableStats) { // radio table for _, p := range rt { - labelR := append([]string{p.Name, p.Radio}, labels[6:]...) + labelR := []string{p.Name, p.Radio, labels[1], labels[2]} labelRUser := append(labelR, "user") labelRGuest := append(labelR, "guest") r.send([]*metric{ diff --git a/pkg/promunifi/udm.go b/pkg/promunifi/udm.go index be23f485..53ade3ac 100644 --- a/pkg/promunifi/udm.go +++ b/pkg/promunifi/udm.go @@ -7,6 +7,7 @@ import ( // These are shared by all four device types: UDM, UAP, USG, USW type unifiDevice struct { + Info *prometheus.Desc Uptime *prometheus.Desc Temperature *prometheus.Desc // sw only TotalMaxPower *prometheus.Desc // sw only @@ -34,8 +35,10 @@ type unifiDevice struct { } func descDevice(ns string) *unifiDevice { - labels := []string{"ip", "version", "model", "serial", "type", "mac", "site_name", "name"} + labels := []string{"type", "site_name", "name"} + infoLabels := []string{"version", "model", "serial", "mac"} return &unifiDevice{ + Info: prometheus.NewDesc(ns+"info", "Device Information", append(labels, infoLabels...), nil), Uptime: prometheus.NewDesc(ns+"uptime", "Uptime", labels, nil), Temperature: prometheus.NewDesc(ns+"temperature_celsius", "Temperature", labels, nil), TotalMaxPower: prometheus.NewDesc(ns+"max_power_total", "Total Max Power", labels, nil), @@ -65,11 +68,13 @@ func descDevice(ns string) *unifiDevice { // UDM is a collection of stats from USG, USW and UAP. It has no unique stats. func (u *promUnifi) exportUDM(r report, d *unifi.UDM) { - labels := []string{d.IP, d.Version, d.Model, d.Serial, d.Type, d.Mac, d.SiteName, d.Name} + labels := []string{d.Type, d.SiteName, d.Name} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} labelsGuest := append(labels, "guest") labelsUser := append(labels, "user") // Dream Machine System Data. r.send([]*metric{ + {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, diff --git a/pkg/promunifi/usg.go b/pkg/promunifi/usg.go index 57c36166..abc09bbe 100644 --- a/pkg/promunifi/usg.go +++ b/pkg/promunifi/usg.go @@ -36,7 +36,7 @@ type usg struct { } func descUSG(ns string) *usg { - // labels := []string{"ip", "version", "model", "serial", "type", "mac", "site_name", "name"} + // labels := []string{"version", "model", "serial", "type", "mac", "site_name", "name"} // labelWan := append([]string{"port"}, labels[6:]...) labels := []string{"port", "site_name", "name"} return &usg{ @@ -71,11 +71,13 @@ func descUSG(ns string) *usg { } func (u *promUnifi) exportUSG(r report, d *unifi.USG) { - labels := []string{d.IP, d.Version, d.Model, d.Serial, d.Type, d.Mac, d.SiteName, d.Name} + labels := []string{d.Type, d.SiteName, d.Name} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} labelsUser := append(labels, "user") labelsGuest := append(labels, "guest") // Gateway System Data. r.send([]*metric{ + {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, @@ -99,8 +101,8 @@ func (u *promUnifi) exportUSG(r report, d *unifi.USG) { } func (u *promUnifi) exportUSGstats(r report, labels []string, gw *unifi.Gw, st unifi.SpeedtestStatus, ul unifi.Uplink) { - labelLan := []string{"lan", labels[6], labels[7]} - labelWan := []string{"all", labels[6], labels[7]} + labelLan := []string{"lan", labels[1], labels[2]} + labelWan := []string{"all", labels[1], labels[2]} r.send([]*metric{ /* // Combined Port Stats - not really needed. sum() the others instead. {u.USG.WanRxPackets, prometheus.CounterValue, gw.WanRxPackets, labelWan}, @@ -130,7 +132,7 @@ func (u *promUnifi) exportWANPorts(r report, labels []string, wans ...unifi.Wan) if !wan.Up.Val { continue // only record UP interfaces. } - labelWan := []string{wan.Name, labels[6], labels[7]} + labelWan := []string{wan.Name, labels[1], labels[2]} r.send([]*metric{ {u.USG.WanRxPackets, prometheus.CounterValue, wan.RxPackets, labelWan}, {u.USG.WanRxBytes, prometheus.CounterValue, wan.RxBytes, labelWan}, diff --git a/pkg/promunifi/usw.go b/pkg/promunifi/usw.go index 4bf76f99..76e0f737 100644 --- a/pkg/promunifi/usw.go +++ b/pkg/promunifi/usw.go @@ -47,8 +47,8 @@ type usw struct { func descUSW(ns string) *usw { pns := ns + "port_" - // labels := []string{"ip", "version", "model", "serial", "type", "mac", "site_name", "name"} - labelS := []string{"site_name", "name"} // labels[6:] + // labels := []string{"type", "site_name", "name"} + labelS := []string{"site_name", "name"} // labels[1:] labelP := []string{"port_id", "port_num", "port_name", "port_mac", "port_ip", "site_name", "name"} return &usw{ SwRxPackets: prometheus.NewDesc(ns+"switch_receive_packets_total", "Switch Packets Received Total", labelS, nil), @@ -91,7 +91,9 @@ func descUSW(ns string) *usw { } func (u *promUnifi) exportUSW(r report, d *unifi.USW) { - labels := []string{d.IP, d.Version, d.Model, d.Serial, d.Type, d.Mac, d.SiteName, d.Name} + + labels := []string{d.Type, d.SiteName, d.Name} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} labelsGuest := append(labels, "guest") labelsUser := append(labels, "user") if d.HasTemperature.Val { @@ -103,6 +105,7 @@ func (u *promUnifi) exportUSW(r report, d *unifi.USW) { // Switch System Data. r.send([]*metric{ + {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalMaxPower, prometheus.GaugeValue, d.TotalMaxPower, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, @@ -124,7 +127,7 @@ func (u *promUnifi) exportUSW(r report, d *unifi.USW) { } func (u *promUnifi) exportUSWstats(r report, labels []string, sw *unifi.Sw) { - labelS := labels[6:] + labelS := labels[1:] r.send([]*metric{ {u.USW.SwRxPackets, prometheus.CounterValue, sw.RxPackets, labelS}, {u.USW.SwRxBytes, prometheus.CounterValue, sw.RxBytes, labelS}, @@ -152,7 +155,7 @@ func (u *promUnifi) exportPortTable(r report, labels []string, pt []unifi.Port) continue } // Copy labels, and add four new ones. - labelP := []string{labels[7] + " Port " + p.PortIdx.Txt, p.PortIdx.Txt, p.Name, p.Mac, p.IP, labels[6], labels[7]} + labelP := []string{labels[2] + " Port " + p.PortIdx.Txt, p.PortIdx.Txt, p.Name, p.Mac, p.IP, labels[1], labels[2]} if p.PoeEnable.Val && p.PortPoe.Val { r.send([]*metric{ {u.USW.PoeCurrent, prometheus.GaugeValue, p.PoeCurrent, labelP}, From 04789d54e987c6b9f85ab66ea15d1b5148ed2674 Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Mon, 2 Dec 2019 19:28:24 -0800 Subject: [PATCH 5/8] add more labels, ditch uptime --- pkg/promunifi/uap.go | 4 ++-- pkg/promunifi/udm.go | 9 +++------ pkg/promunifi/usg.go | 3 +-- pkg/promunifi/usw.go | 3 +-- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/pkg/promunifi/uap.go b/pkg/promunifi/uap.go index c537632e..108fea3f 100644 --- a/pkg/promunifi/uap.go +++ b/pkg/promunifi/uap.go @@ -161,11 +161,11 @@ func descUAP(ns string) *uap { func (u *promUnifi) exportUAP(r report, d *unifi.UAP) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac, d.IP, d.ID, d.Bytes.Txt} + // Wireless System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, - {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, {u.Device.TotalBytes, prometheus.CounterValue, d.Bytes, labels}, diff --git a/pkg/promunifi/udm.go b/pkg/promunifi/udm.go index 53ade3ac..83202df1 100644 --- a/pkg/promunifi/udm.go +++ b/pkg/promunifi/udm.go @@ -7,8 +7,7 @@ import ( // These are shared by all four device types: UDM, UAP, USG, USW type unifiDevice struct { - Info *prometheus.Desc - Uptime *prometheus.Desc + Info *prometheus.Desc // uptime Temperature *prometheus.Desc // sw only TotalMaxPower *prometheus.Desc // sw only FanLevel *prometheus.Desc // sw only @@ -36,10 +35,9 @@ type unifiDevice struct { func descDevice(ns string) *unifiDevice { labels := []string{"type", "site_name", "name"} - infoLabels := []string{"version", "model", "serial", "mac"} + infoLabels := []string{"version", "model", "serial", "mac", "ip", "id", "bytes"} return &unifiDevice{ Info: prometheus.NewDesc(ns+"info", "Device Information", append(labels, infoLabels...), nil), - Uptime: prometheus.NewDesc(ns+"uptime", "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), @@ -69,13 +67,12 @@ func descDevice(ns string) *unifiDevice { // UDM is a collection of stats from USG, USW and UAP. It has no unique stats. func (u *promUnifi) exportUDM(r report, d *unifi.UDM) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac, d.IP, d.ID, d.Bytes.Txt} labelsGuest := append(labels, "guest") labelsUser := append(labels, "user") // Dream Machine System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, - {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, {u.Device.TotalBytes, prometheus.CounterValue, d.Bytes, labels}, diff --git a/pkg/promunifi/usg.go b/pkg/promunifi/usg.go index abc09bbe..03c6a12f 100644 --- a/pkg/promunifi/usg.go +++ b/pkg/promunifi/usg.go @@ -72,13 +72,12 @@ func descUSG(ns string) *usg { func (u *promUnifi) exportUSG(r report, d *unifi.USG) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac, d.IP, d.ID, d.Bytes.Txt} labelsUser := append(labels, "user") labelsGuest := append(labels, "guest") // Gateway System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, - {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, {u.Device.TotalBytes, prometheus.CounterValue, d.Bytes, labels}, diff --git a/pkg/promunifi/usw.go b/pkg/promunifi/usw.go index 76e0f737..034b52db 100644 --- a/pkg/promunifi/usw.go +++ b/pkg/promunifi/usw.go @@ -93,7 +93,7 @@ func descUSW(ns string) *usw { func (u *promUnifi) exportUSW(r report, d *unifi.USW) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac, d.IP, d.ID, d.Bytes.Txt} labelsGuest := append(labels, "guest") labelsUser := append(labels, "user") if d.HasTemperature.Val { @@ -106,7 +106,6 @@ func (u *promUnifi) exportUSW(r report, d *unifi.USW) { // Switch System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, - {u.Device.Uptime, prometheus.GaugeValue, d.Uptime, labels}, {u.Device.TotalMaxPower, prometheus.GaugeValue, d.TotalMaxPower, labels}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, From 09dbed72f83c2e3de45c7129bd73db81135157f7 Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Mon, 2 Dec 2019 19:40:29 -0800 Subject: [PATCH 6/8] comment cleanup --- pkg/promunifi/uap.go | 1 - pkg/promunifi/usg.go | 2 -- pkg/promunifi/usw.go | 4 +--- 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/pkg/promunifi/uap.go b/pkg/promunifi/uap.go index 108fea3f..40fe4891 100644 --- a/pkg/promunifi/uap.go +++ b/pkg/promunifi/uap.go @@ -80,7 +80,6 @@ type uap struct { } func descUAP(ns string) *uap { - // labels := []string{"type", "site_name", "name"} labelA := []string{"stat", "site_name", "name"} // stat + labels[1:] labelV := []string{"vap_name", "bssid", "radio", "radio_name", "essid", "usage", "site_name", "name"} labelR := []string{"radio_name", "radio", "site_name", "name"} diff --git a/pkg/promunifi/usg.go b/pkg/promunifi/usg.go index 03c6a12f..08282f37 100644 --- a/pkg/promunifi/usg.go +++ b/pkg/promunifi/usg.go @@ -36,8 +36,6 @@ type usg struct { } func descUSG(ns string) *usg { - // labels := []string{"version", "model", "serial", "type", "mac", "site_name", "name"} - // labelWan := append([]string{"port"}, labels[6:]...) labels := []string{"port", "site_name", "name"} return &usg{ WanRxPackets: prometheus.NewDesc(ns+"wan_receive_packets_total", "WAN Receive Packets Total", labels, nil), diff --git a/pkg/promunifi/usw.go b/pkg/promunifi/usw.go index 034b52db..c8d32581 100644 --- a/pkg/promunifi/usw.go +++ b/pkg/promunifi/usw.go @@ -47,8 +47,7 @@ type usw struct { func descUSW(ns string) *usw { pns := ns + "port_" - // labels := []string{"type", "site_name", "name"} - labelS := []string{"site_name", "name"} // labels[1:] + labelS := []string{"site_name", "name"} labelP := []string{"port_id", "port_num", "port_name", "port_mac", "port_ip", "site_name", "name"} return &usw{ SwRxPackets: prometheus.NewDesc(ns+"switch_receive_packets_total", "Switch Packets Received Total", labelS, nil), @@ -91,7 +90,6 @@ func descUSW(ns string) *usw { } func (u *promUnifi) exportUSW(r report, d *unifi.USW) { - labels := []string{d.Type, d.SiteName, d.Name} infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac, d.IP, d.ID, d.Bytes.Txt} labelsGuest := append(labels, "guest") From d565ee9c325baa7eb02b8c67a5ff6569322e87b7 Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Mon, 2 Dec 2019 20:18:55 -0800 Subject: [PATCH 7/8] combine more counters, fix cpu/mem graphs, fix udmp type --- pkg/poller/unifi.go | 5 ++++- pkg/promunifi/uap.go | 8 ++++---- pkg/promunifi/udm.go | 19 +++++++------------ pkg/promunifi/usg.go | 16 +++++++--------- pkg/promunifi/usw.go | 8 ++++---- 5 files changed, 26 insertions(+), 30 deletions(-) diff --git a/pkg/poller/unifi.go b/pkg/poller/unifi.go index 73708243..ebd01f79 100644 --- a/pkg/poller/unifi.go +++ b/pkg/poller/unifi.go @@ -101,7 +101,10 @@ func (u *UnifiPoller) AugmentMetrics(metrics *metrics.Metrics) { for _, r := range metrics.USWs { devices[r.Mac] = r.Name } - for _, r := range metrics.UDMs { + for i, r := range metrics.UDMs { + if r.Model == "UDMPRO" { + metrics.UDMs[i].Type = "udmp" + } devices[r.Mac] = r.Name } // These come blank, so set them here. diff --git a/pkg/promunifi/uap.go b/pkg/promunifi/uap.go index 40fe4891..1faf9203 100644 --- a/pkg/promunifi/uap.go +++ b/pkg/promunifi/uap.go @@ -172,16 +172,16 @@ func (u *promUnifi) exportUAP(r report, d *unifi.UAP) { {u.Device.TxBytesD, prometheus.CounterValue, d.TxBytesD, labels}, // not sure if these 3 Ds are counters or gauges. {u.Device.RxBytesD, prometheus.CounterValue, d.RxBytesD, labels}, // not sure if these 3 Ds are counters or gauges. {u.Device.BytesR, prometheus.GaugeValue, d.BytesR, labels}, - {u.Device.NumSta, prometheus.GaugeValue, d.UserNumSta, append(labels, "user")}, - {u.Device.NumSta, prometheus.GaugeValue, d.GuestNumSta, append(labels, "guest")}, + {u.Device.Counter, prometheus.GaugeValue, d.UserNumSta, append(labels, "user")}, + {u.Device.Counter, prometheus.GaugeValue, d.GuestNumSta, append(labels, "guest")}, {u.Device.Loadavg1, prometheus.GaugeValue, d.SysStats.Loadavg1, labels}, {u.Device.Loadavg5, prometheus.GaugeValue, d.SysStats.Loadavg5, labels}, {u.Device.Loadavg15, prometheus.GaugeValue, d.SysStats.Loadavg15, labels}, {u.Device.MemUsed, prometheus.GaugeValue, d.SysStats.MemUsed, labels}, {u.Device.MemTotal, prometheus.GaugeValue, d.SysStats.MemTotal, labels}, {u.Device.MemBuffer, prometheus.GaugeValue, d.SysStats.MemBuffer, labels}, - {u.Device.CPU, prometheus.GaugeValue, d.SystemStats.CPU, labels}, - {u.Device.Mem, prometheus.GaugeValue, d.SystemStats.Mem, labels}, + {u.Device.CPU, prometheus.GaugeValue, d.SystemStats.CPU.Val / 100.0, labels}, + {u.Device.Mem, prometheus.GaugeValue, d.SystemStats.Mem.Val / 100.0, labels}, }) u.exportUAPstats(r, labels, d.Stat.Ap) diff --git a/pkg/promunifi/udm.go b/pkg/promunifi/udm.go index 83202df1..d1fdb761 100644 --- a/pkg/promunifi/udm.go +++ b/pkg/promunifi/udm.go @@ -19,7 +19,7 @@ type unifiDevice struct { Bytes *prometheus.Desc // ap only TxBytesD *prometheus.Desc // ap only RxBytesD *prometheus.Desc // ap only - NumSta *prometheus.Desc + Counter *prometheus.Desc NumDesktop *prometheus.Desc // gw only NumMobile *prometheus.Desc // gw only NumHandheld *prometheus.Desc // gw only @@ -49,10 +49,7 @@ func descDevice(ns string) *unifiDevice { Bytes: prometheus.NewDesc(ns+"transferred_bytes_total", "Bytes Transferred", labels, nil), TxBytesD: prometheus.NewDesc(ns+"d_tranmsit_bytes", "Transmit Bytes D???", labels, nil), RxBytesD: prometheus.NewDesc(ns+"d_receive_bytes", "Receive Bytes D???", labels, nil), - NumSta: prometheus.NewDesc(ns+"stations", "Number of Stations", append(labels, "station_type"), nil), - NumDesktop: prometheus.NewDesc(ns+"desktops", "Number of Desktops", labels, nil), - NumMobile: prometheus.NewDesc(ns+"mobile", "Number of Mobiles", labels, nil), - NumHandheld: prometheus.NewDesc(ns+"handheld", "Number of Handhelds", labels, nil), + Counter: prometheus.NewDesc(ns+"stations", "Number of Stations", append(labels, "station_type"), nil), Loadavg1: prometheus.NewDesc(ns+"load_average_1", "System Load Average 1 Minute", labels, nil), Loadavg5: prometheus.NewDesc(ns+"load_average_5", "System Load Average 5 Minutes", labels, nil), Loadavg15: prometheus.NewDesc(ns+"load_average_15", "System Load Average 15 Minutes", labels, nil), @@ -68,19 +65,17 @@ func descDevice(ns string) *unifiDevice { func (u *promUnifi) exportUDM(r report, d *unifi.UDM) { labels := []string{d.Type, d.SiteName, d.Name} infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac, d.IP, d.ID, d.Bytes.Txt} - labelsGuest := append(labels, "guest") - labelsUser := append(labels, "user") // Dream Machine System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, {u.Device.TotalBytes, prometheus.CounterValue, d.Bytes, labels}, - {u.Device.NumSta, prometheus.GaugeValue, d.UserNumSta, labelsUser}, - {u.Device.NumSta, prometheus.GaugeValue, d.GuestNumSta, labelsGuest}, - {u.Device.NumDesktop, prometheus.GaugeValue, d.NumDesktop, labels}, - {u.Device.NumMobile, prometheus.GaugeValue, d.NumMobile, labels}, - {u.Device.NumHandheld, prometheus.GaugeValue, d.NumHandheld, labels}, + {u.Device.Counter, prometheus.GaugeValue, d.UserNumSta, append(labels, "user")}, + {u.Device.Counter, prometheus.GaugeValue, d.GuestNumSta, append(labels, "guest")}, + {u.Device.Counter, prometheus.GaugeValue, d.NumDesktop, append(labels, "desktop")}, + {u.Device.Counter, prometheus.GaugeValue, d.NumMobile, append(labels, "mobile")}, + {u.Device.Counter, prometheus.GaugeValue, d.NumHandheld, append(labels, "handheld")}, {u.Device.Loadavg1, prometheus.GaugeValue, d.SysStats.Loadavg1, labels}, {u.Device.Loadavg5, prometheus.GaugeValue, d.SysStats.Loadavg5, labels}, {u.Device.Loadavg15, prometheus.GaugeValue, d.SysStats.Loadavg15, labels}, diff --git a/pkg/promunifi/usg.go b/pkg/promunifi/usg.go index 08282f37..2682e94a 100644 --- a/pkg/promunifi/usg.go +++ b/pkg/promunifi/usg.go @@ -71,27 +71,25 @@ func descUSG(ns string) *usg { func (u *promUnifi) exportUSG(r report, d *unifi.USG) { labels := []string{d.Type, d.SiteName, d.Name} infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac, d.IP, d.ID, d.Bytes.Txt} - labelsUser := append(labels, "user") - labelsGuest := append(labels, "guest") // Gateway System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)}, {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, {u.Device.TotalBytes, prometheus.CounterValue, d.Bytes, labels}, - {u.Device.NumSta, prometheus.GaugeValue, d.UserNumSta, labelsUser}, - {u.Device.NumSta, prometheus.GaugeValue, d.GuestNumSta, labelsGuest}, - {u.Device.NumDesktop, prometheus.GaugeValue, d.NumDesktop, labels}, - {u.Device.NumMobile, prometheus.GaugeValue, d.NumMobile, labels}, - {u.Device.NumHandheld, prometheus.GaugeValue, d.NumHandheld, labels}, + {u.Device.Counter, prometheus.GaugeValue, d.UserNumSta, append(labels, "user")}, + {u.Device.Counter, prometheus.GaugeValue, d.GuestNumSta, append(labels, "guest")}, + {u.Device.Counter, prometheus.GaugeValue, d.NumDesktop, append(labels, "desktop")}, + {u.Device.Counter, prometheus.GaugeValue, d.NumMobile, append(labels, "mobile")}, + {u.Device.Counter, prometheus.GaugeValue, d.NumHandheld, append(labels, "handheld")}, {u.Device.Loadavg1, prometheus.GaugeValue, d.SysStats.Loadavg1, labels}, {u.Device.Loadavg5, prometheus.GaugeValue, d.SysStats.Loadavg5, labels}, {u.Device.Loadavg15, prometheus.GaugeValue, d.SysStats.Loadavg15, labels}, {u.Device.MemUsed, prometheus.GaugeValue, d.SysStats.MemUsed, labels}, {u.Device.MemTotal, prometheus.GaugeValue, d.SysStats.MemTotal, labels}, {u.Device.MemBuffer, prometheus.GaugeValue, d.SysStats.MemBuffer, labels}, - {u.Device.CPU, prometheus.GaugeValue, d.SystemStats.CPU, labels}, - {u.Device.Mem, prometheus.GaugeValue, d.SystemStats.Mem, labels}, + {u.Device.CPU, prometheus.GaugeValue, d.SystemStats.CPU.Val / 100.0, labels}, + {u.Device.Mem, prometheus.GaugeValue, d.SystemStats.Mem.Val / 100.0, labels}, }) u.exportWANPorts(r, labels, d.Wan1, d.Wan2) u.exportUSGstats(r, labels, d.Stat.Gw, d.SpeedtestStatus, d.Uplink) diff --git a/pkg/promunifi/usw.go b/pkg/promunifi/usw.go index c8d32581..cd5508c0 100644 --- a/pkg/promunifi/usw.go +++ b/pkg/promunifi/usw.go @@ -108,16 +108,16 @@ func (u *promUnifi) exportUSW(r report, d *unifi.USW) { {u.Device.TotalTxBytes, prometheus.CounterValue, d.TxBytes, labels}, {u.Device.TotalRxBytes, prometheus.CounterValue, d.RxBytes, labels}, {u.Device.TotalBytes, prometheus.CounterValue, d.Bytes, labels}, - {u.Device.NumSta, prometheus.GaugeValue, d.UserNumSta, labelsUser}, - {u.Device.NumSta, prometheus.GaugeValue, d.GuestNumSta, labelsGuest}, + {u.Device.Counter, prometheus.GaugeValue, d.UserNumSta, labelsUser}, + {u.Device.Counter, prometheus.GaugeValue, d.GuestNumSta, labelsGuest}, {u.Device.Loadavg1, prometheus.GaugeValue, d.SysStats.Loadavg1, labels}, {u.Device.Loadavg5, prometheus.GaugeValue, d.SysStats.Loadavg5, labels}, {u.Device.Loadavg15, prometheus.GaugeValue, d.SysStats.Loadavg15, labels}, {u.Device.MemUsed, prometheus.GaugeValue, d.SysStats.MemUsed, labels}, {u.Device.MemTotal, prometheus.GaugeValue, d.SysStats.MemTotal, labels}, {u.Device.MemBuffer, prometheus.GaugeValue, d.SysStats.MemBuffer, labels}, - {u.Device.CPU, prometheus.GaugeValue, d.SystemStats.CPU, labels}, - {u.Device.Mem, prometheus.GaugeValue, d.SystemStats.Mem, labels}, + {u.Device.CPU, prometheus.GaugeValue, d.SystemStats.CPU.Val / 100.0, labels}, + {u.Device.Mem, prometheus.GaugeValue, d.SystemStats.Mem.Val / 100.0, labels}, }) u.exportPortTable(r, labels, d.PortTable) u.exportUSWstats(r, labels, d.Stat.Sw) From c14ffd2305735de539cd9365647ffadd71c1e8e8 Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Mon, 2 Dec 2019 20:56:08 -0800 Subject: [PATCH 8/8] missed --- pkg/promunifi/udm.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/promunifi/udm.go b/pkg/promunifi/udm.go index 5616a605..d1fdb761 100644 --- a/pkg/promunifi/udm.go +++ b/pkg/promunifi/udm.go @@ -64,7 +64,7 @@ func descDevice(ns string) *unifiDevice { // UDM is a collection of stats from USG, USW and UAP. It has no unique stats. func (u *promUnifi) exportUDM(r report, d *unifi.UDM) { labels := []string{d.Type, d.SiteName, d.Name} - infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac} + infoLabels := []string{d.Version, d.Model, d.Serial, d.Mac, d.IP, d.ID, d.Bytes.Txt} // Dream Machine System Data. r.send([]*metric{ {u.Device.Info, prometheus.GaugeValue, d.Uptime, append(labels, infoLabels...)},