diff --git a/pkg/datadogunifi/site.go b/pkg/datadogunifi/site.go index 2a9f9c32..8b417cf6 100644 --- a/pkg/datadogunifi/site.go +++ b/pkg/datadogunifi/site.go @@ -22,8 +22,14 @@ func (u *DatadogUnifi) reportSite(r report, s *unifi.Site) { tag("lan_ip", h.LanIP), } + // For VPN subsystem, use RemoteUserNumActive for num_user if NumUser is not set + numUser := h.NumUser.Val + if h.Subsystem == "vpn" && numUser == 0 && h.RemoteUserNumActive.Val > 0 { + numUser = h.RemoteUserNumActive.Val + } + data := map[string]float64{ - "num_user": h.NumUser.Val, + "num_user": numUser, "num_guest": h.NumGuest.Val, "num_iot": h.NumIot.Val, "tx_bytes_r": h.TxBytesR.Val, diff --git a/pkg/influxunifi/site.go b/pkg/influxunifi/site.go index 5d102bec..01138c5e 100644 --- a/pkg/influxunifi/site.go +++ b/pkg/influxunifi/site.go @@ -19,8 +19,15 @@ func (u *InfluxUnifi) batchSite(r report, s *unifi.Site) { "gw_name": h.GwName, "lan_ip": h.LanIP, } + + // For VPN subsystem, use RemoteUserNumActive for num_user if NumUser is not set + numUser := h.NumUser.Val + if h.Subsystem == "vpn" && numUser == 0 && h.RemoteUserNumActive.Val > 0 { + numUser = h.RemoteUserNumActive.Val + } + fields := map[string]any{ - "num_user": h.NumUser.Val, + "num_user": numUser, "num_guest": h.NumGuest.Val, "num_iot": h.NumIot.Val, "tx_bytes-r": h.TxBytesR.Int64(), diff --git a/pkg/promunifi/site.go b/pkg/promunifi/site.go index 11e4f6c9..95842f4c 100644 --- a/pkg/promunifi/site.go +++ b/pkg/promunifi/site.go @@ -146,7 +146,14 @@ func (u *promUnifi) exportSite(r report, s *unifi.Site) { {u.Site.NumSw, gauge, h.NumSw, labels}, }) case "vpn": + // For VPN subsystem, use RemoteUserNumActive for NumUser if NumUser is not set + numUser := h.NumUser.Val + if numUser == 0 && h.RemoteUserNumActive.Val > 0 { + numUser = h.RemoteUserNumActive.Val + } + r.send([]*metric{ + {u.Site.NumUser, gauge, numUser, labels}, {u.Site.RemoteUserNumActive, gauge, h.RemoteUserNumActive, labels}, {u.Site.RemoteUserNumInactive, gauge, h.RemoteUserNumInactive, labels}, {u.Site.RemoteUserRxBytes, counter, h.RemoteUserRxBytes, labels},