From 4da299ff46a3f3f1799cab08eda6868fd0918904 Mon Sep 17 00:00:00 2001 From: Cody Lee Date: Thu, 2 Jan 2025 12:41:34 -0600 Subject: [PATCH 1/3] adds device uplink stats for issue #585 --- pkg/datadogunifi/ubb.go | 18 +++++++++++------- pkg/datadogunifi/usg.go | 2 ++ pkg/datadogunifi/usw.go | 4 ++++ pkg/datadogunifi/uxg.go | 26 +++++++++++++++----------- pkg/influxunifi/ubb.go | 26 +++++++++++++++----------- pkg/influxunifi/usg.go | 2 ++ pkg/influxunifi/usw.go | 4 ++++ pkg/promunifi/usg.go | 6 ++++++ 8 files changed, 59 insertions(+), 29 deletions(-) diff --git a/pkg/datadogunifi/ubb.go b/pkg/datadogunifi/ubb.go index 4bb720c7..ad82c65b 100644 --- a/pkg/datadogunifi/ubb.go +++ b/pkg/datadogunifi/ubb.go @@ -45,13 +45,17 @@ func (u *DatadogUnifi) batchUBB(r report, s *unifi.UBB) { // nolint: funlen data := CombineFloat64( u.batchSysStats(sysStats, systemStats), map[string]float64{ - "bytes": s.Bytes.Val, - "last_seen": s.LastSeen.Val, - "rx_bytes": s.RxBytes.Val, - "tx_bytes": s.TxBytes.Val, - "uptime": s.Uptime.Val, - "state": s.State.Val, - "user_num_sta": s.UserNumSta.Val, + "bytes": s.Bytes.Val, + "last_seen": s.LastSeen.Val, + "rx_bytes": s.RxBytes.Val, + "tx_bytes": s.TxBytes.Val, + "uptime": s.Uptime.Val, + "state": s.State.Val, + "user_num_sta": s.UserNumSta.Val, + "uplink_speed": s.Uplink.Speed.Val, + "uplink_max_speed": s.Uplink.MaxSpeed.Val, + "uplink_latency": s.Uplink.Latency.Val, + "uplink_uptime": s.Uplink.Uptime.Val, }, ) diff --git a/pkg/datadogunifi/usg.go b/pkg/datadogunifi/usg.go index 1bdb8ca3..d552f3c2 100644 --- a/pkg/datadogunifi/usg.go +++ b/pkg/datadogunifi/usg.go @@ -64,6 +64,8 @@ func (u *DatadogUnifi) batchUSGstats(ss unifi.SpeedtestStatus, gw *unifi.Gw, ul return map[string]float64{ "uplink_latency": ul.Latency.Val, "uplink_speed": ul.Speed.Val, + "uplink_max_speed": ul.MaxSpeed.Val, + "uplink_uptime": ul.Uptime.Val, "speedtest_status_latency": ss.Latency.Val, "speedtest_status_runtime": ss.Runtime.Val, "speedtest_status_rundate": ss.Rundate.Val, diff --git a/pkg/datadogunifi/usw.go b/pkg/datadogunifi/usw.go index 72ebb9b1..d9dd5a17 100644 --- a/pkg/datadogunifi/usw.go +++ b/pkg/datadogunifi/usw.go @@ -40,6 +40,10 @@ func (u *DatadogUnifi) batchUSW(r report, s *unifi.USW) { "state": s.State.Val, "user_num_sta": s.UserNumSta.Val, "upgradeable": boolToFloat64(s.Upgradeable.Val), + "uplink_speed": s.Uplink.Speed.Val, + "uplink_max_speed": s.Uplink.MaxSpeed.Val, + "uplink_latency": s.Uplink.Latency.Val, + "uplink_uptime": s.Uplink.Uptime.Val, }) r.addCount(uswT) diff --git a/pkg/datadogunifi/uxg.go b/pkg/datadogunifi/uxg.go index 4178bac3..00359a81 100644 --- a/pkg/datadogunifi/uxg.go +++ b/pkg/datadogunifi/uxg.go @@ -43,17 +43,21 @@ func (u *DatadogUnifi) batchUXG(r report, s *unifi.UXG) { // nolint: funlen u.batchUSGstats(s.SpeedtestStatus, gw, s.Uplink), u.batchSysStats(s.SysStats, s.SystemStats), map[string]float64{ - "bytes": s.Bytes.Val, - "last_seen": s.LastSeen.Val, - "guest_num_sta": s.GuestNumSta.Val, - "rx_bytes": s.RxBytes.Val, - "tx_bytes": s.TxBytes.Val, - "uptime": s.Uptime.Val, - "state": s.State.Val, - "user_num_sta": s.UserNumSta.Val, - "num_desktop": s.NumDesktop.Val, - "num_handheld": s.NumHandheld.Val, - "num_mobile": s.NumMobile.Val, + "bytes": s.Bytes.Val, + "last_seen": s.LastSeen.Val, + "guest_num_sta": s.GuestNumSta.Val, + "rx_bytes": s.RxBytes.Val, + "tx_bytes": s.TxBytes.Val, + "uptime": s.Uptime.Val, + "state": s.State.Val, + "user_num_sta": s.UserNumSta.Val, + "num_desktop": s.NumDesktop.Val, + "num_handheld": s.NumHandheld.Val, + "num_mobile": s.NumMobile.Val, + "uplink_speed": s.Uplink.Speed.Val, + "uplink_max_speed": s.Uplink.MaxSpeed.Val, + "uplink_latency": s.Uplink.Latency.Val, + "uplink_uptime": s.Uplink.Uptime.Val, }, ) diff --git a/pkg/influxunifi/ubb.go b/pkg/influxunifi/ubb.go index 48527773..7093e4f1 100644 --- a/pkg/influxunifi/ubb.go +++ b/pkg/influxunifi/ubb.go @@ -43,17 +43,21 @@ func (u *InfluxUnifi) batchUBB(r report, s *unifi.UBB) { // nolint: funlen fields := Combine( u.batchSysStats(sysStats, systemStats), map[string]any{ - "source": s.SourceName, - "ip": s.IP, - "bytes": s.Bytes.Val, - "last_seen": s.LastSeen.Val, - "license_state": s.LicenseState, - "rx_bytes": s.RxBytes.Val, - "tx_bytes": s.TxBytes.Val, - "uptime": s.Uptime.Val, - "state": s.State.Val, - "user-num_sta": s.UserNumSta.Val, - "version": s.Version, + "source": s.SourceName, + "ip": s.IP, + "bytes": s.Bytes.Val, + "last_seen": s.LastSeen.Val, + "license_state": s.LicenseState, + "rx_bytes": s.RxBytes.Val, + "tx_bytes": s.TxBytes.Val, + "uptime": s.Uptime.Val, + "state": s.State.Val, + "user-num_sta": s.UserNumSta.Val, + "version": s.Version, + "uplink_speed": s.Uplink.Speed.Val, + "uplink_max_speed": s.Uplink.MaxSpeed.Val, + "uplink_latency": s.Uplink.Latency.Val, + "uplink_uptime": s.Uplink.Uptime.Val, }, ) diff --git a/pkg/influxunifi/usg.go b/pkg/influxunifi/usg.go index ca5ad1e6..3b4589a4 100644 --- a/pkg/influxunifi/usg.go +++ b/pkg/influxunifi/usg.go @@ -63,6 +63,8 @@ func (u *InfluxUnifi) batchUSGstats(ss unifi.SpeedtestStatus, gw *unifi.Gw, ul u "uplink_name": ul.Name, "uplink_latency": ul.Latency.Val, "uplink_speed": ul.Speed.Val, + "uplink_max_speed": ul.MaxSpeed.Val, + "uplink_uptime": ul.Uptime.Val, "uplink_type": ul.Type, "speedtest-status_latency": ss.Latency.Val, "speedtest-status_runtime": ss.Runtime.Val, diff --git a/pkg/influxunifi/usw.go b/pkg/influxunifi/usw.go index fd92db27..78eb47d8 100644 --- a/pkg/influxunifi/usw.go +++ b/pkg/influxunifi/usw.go @@ -40,6 +40,10 @@ func (u *InfluxUnifi) batchUSW(r report, s *unifi.USW) { "state": s.State.Val, "user-num_sta": s.UserNumSta.Val, "upgradeable": s.Upgradable.Val, + "uplink_speed": s.Uplink.Speed.Val, + "uplink_max_speed": s.Uplink.MaxSpeed.Val, + "uplink_latency": s.Uplink.Latency.Val, + "uplink_uptime": s.Uplink.Uptime.Val, }) r.addCount(uswT) diff --git a/pkg/promunifi/usg.go b/pkg/promunifi/usg.go index 2dfc11a2..66a89999 100644 --- a/pkg/promunifi/usg.go +++ b/pkg/promunifi/usg.go @@ -32,6 +32,8 @@ type usg struct { Latency *prometheus.Desc UplinkLatency *prometheus.Desc UplinkSpeed *prometheus.Desc + UplinkMaxSpeed *prometheus.Desc + UplinkUptime *prometheus.Desc Runtime *prometheus.Desc Rundate *prometheus.Desc XputDownload *prometheus.Desc @@ -65,6 +67,8 @@ func descUSG(ns string) *usg { LanTxBytes: prometheus.NewDesc(ns+"lan_transmit_bytes_total", "LAN Transmit Bytes Total", labels, nil), UplinkLatency: prometheus.NewDesc(ns+"uplink_latency_seconds", "Uplink Latency", labels, nil), UplinkSpeed: prometheus.NewDesc(ns+"uplink_speed_mbps", "Uplink Speed", labels, nil), + UplinkMaxSpeed: prometheus.NewDesc(ns+"uplink_max_speed_mbps", "Uplink Max Speed", labels, nil), + UplinkUptime: prometheus.NewDesc(ns+"uplink_uptime_seconds", "Uplink Uptime", labels, nil), Latency: prometheus.NewDesc(ns+"speedtest_latency_seconds", "Speedtest Latency", labels, nil), Runtime: prometheus.NewDesc(ns+"speedtest_runtime_seconds", "Speedtest Run Time", labels, nil), Rundate: prometheus.NewDesc(ns+"speedtest_rundate_seconds", "Speedtest Run Date", labels, nil), @@ -132,6 +136,8 @@ func (u *promUnifi) exportUSGstats(r report, labels []string, gw *unifi.Gw, st u {u.USG.LanRxDropped, counter, gw.LanRxDropped, labelLan}, {u.USG.UplinkLatency, gauge, ul.Latency.Val / 1000, labelWan}, {u.USG.UplinkSpeed, gauge, ul.Speed, labelWan}, + {u.USG.UplinkMaxSpeed, gauge, ul.MaxSpeed, labelWan}, + {u.USG.UplinkUptime, gauge, ul.Uptime, labelWan}, // Speed Test Stats {u.USG.Latency, gauge, st.Latency.Val / 1000, labelWan}, {u.USG.Runtime, gauge, st.Runtime, labelWan}, From 9d1f8606dfc10aa4e591007884974248258d7e54 Mon Sep 17 00:00:00 2001 From: Cody Lee Date: Thu, 2 Jan 2025 12:46:17 -0600 Subject: [PATCH 2/3] update expectations --- pkg/datadogunifi/integration_test_expectations.yaml | 2 ++ pkg/influxunifi/integration_test_expectations.yaml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/pkg/datadogunifi/integration_test_expectations.yaml b/pkg/datadogunifi/integration_test_expectations.yaml index 9ada00b0..6e34598d 100644 --- a/pkg/datadogunifi/integration_test_expectations.yaml +++ b/pkg/datadogunifi/integration_test_expectations.yaml @@ -366,6 +366,8 @@ gauges: - unifi.ubb.uptime - unifi.ubb.mem - unifi.ubb.network + - unifi.uplink_max_speed + - unifi.uplink_uptime counts: - unifi.collector.num_devices - unifi.collector.num_errors diff --git a/pkg/influxunifi/integration_test_expectations.yaml b/pkg/influxunifi/integration_test_expectations.yaml index e1e9afda..2be4af83 100644 --- a/pkg/influxunifi/integration_test_expectations.yaml +++ b/pkg/influxunifi/integration_test_expectations.yaml @@ -615,9 +615,11 @@ points: tx_bytes: float upgradeable: bool uplink_latency: float + uplink_max_speed: float uplink_name: string uplink_speed: float uplink_type: string + uplink_uptime: float uptime: float user-num_sta: float version: string From ed3c22299215315becb69effbe405d12168813ea Mon Sep 17 00:00:00 2001 From: Cody Lee Date: Thu, 2 Jan 2025 12:51:37 -0600 Subject: [PATCH 3/3] oops fix dd expectation --- pkg/datadogunifi/integration_test_expectations.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/datadogunifi/integration_test_expectations.yaml b/pkg/datadogunifi/integration_test_expectations.yaml index 6e34598d..fa03e22f 100644 --- a/pkg/datadogunifi/integration_test_expectations.yaml +++ b/pkg/datadogunifi/integration_test_expectations.yaml @@ -366,8 +366,12 @@ gauges: - unifi.ubb.uptime - unifi.ubb.mem - unifi.ubb.network - - unifi.uplink_max_speed - - unifi.uplink_uptime + - unifi.ubb.uplink_speed + - unifi.ubb.uplink_latency + - unifi.ubb.uplink_max_speed + - unifi.ubb.uplink_uptime + - unifi.usg.uplink_max_speed + - unifi.usg.uplink_uptime counts: - unifi.collector.num_devices - unifi.collector.num_errors