From 5a286459f14032af9be2d9b4d1af7acfb557340e Mon Sep 17 00:00:00 2001 From: davidnewhall2 Date: Sun, 17 Nov 2019 11:55:00 -0800 Subject: [PATCH] code shrinking --- promunifi/clients.go | 155 +++++++++-------------------------------- promunifi/collector.go | 25 ++++++- promunifi/site.go | 125 ++++++++------------------------- 3 files changed, 86 insertions(+), 219 deletions(-) diff --git a/promunifi/clients.go b/promunifi/clients.go index d54be9c5..8f3823c1 100644 --- a/promunifi/clients.go +++ b/promunifi/clients.go @@ -39,133 +39,46 @@ type client struct { } func descClient(ns string) *client { + if ns += "_client_"; ns == "_client_" { + ns = "client_" + } + labels := []string{"id", "mac", "user_id", "site_id", "site_name", "network_id", "ap_mac", "gw_mac", "sw_mac", "ap_name", "gw_name", "sw_name", "radio_name", "radio", "radio_proto", "name", "channel", "vlan", "ip", "essid", "bssid", "radio_desc"} - ns2 := "client" return &client{ - Anomalies: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "Anomalies"), - "Client Anomalies", labels, nil, - ), - BytesR: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "BytesR"), - "Client Data Rate", labels, nil, - ), - CCQ: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "CCQ"), - "Client Connection Quality", labels, nil, - ), - Noise: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "Noise"), - "Client AP Noise", labels, nil, - ), - RoamCount: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RoamCount"), - "Client Roam Counter", labels, nil, - ), - RSSI: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RSSI"), - "Client RSSI", labels, nil, - ), - RxBytes: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RxBytes"), - "Client Receive Bytes", labels, nil, - ), - RxBytesR: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RxBytesR"), - "Client Receive Data Rate", labels, nil, - ), - RxPackets: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RxPackets"), - "Client Receive Packets", labels, nil, - ), - RxRate: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RxRate"), - "Client Receive Rate", labels, nil, - ), - Signal: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "Signal"), - "Client Signal Strength", labels, nil, - ), - TxBytes: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "TxBytes"), - "Client Transmit Bytes", labels, nil, - ), - TxBytesR: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "TxBytesR"), - "Client Transmit Data Rate", labels, nil, - ), - TxPackets: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "TxPackets"), - "Client Transmit Packets", labels, nil, - ), - TxPower: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "TxPower"), - "Client Transmit Power", labels, nil, - ), - TxRate: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "TxRate"), - "Client Transmit Rate", labels, nil, - ), - Uptime: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "Uptime"), - "Client Uptime", labels, nil, - ), - WifiTxAttempts: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "WifiTxAttempts"), - "Client Wifi Transmit Attempts", labels, nil, - ), - WiredRxBytes: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "WiredRxBytes"), - "Client Wired Receive Bytes", labels, nil, - ), - WiredRxBytesR: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "WiredRxBytesR"), - "Client Wired Receive Data Rate", labels, nil, - ), - WiredRxPackets: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "WiredRxPackets"), - "Client Wired Receive Packets", labels, nil, - ), - WiredTxBytes: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "WiredTxBytes"), - "Client Wired Transmit Bytes", labels, nil, - ), - WiredTxBytesR: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "WiredTxBytesR"), - "Client Wired Data Rate", labels, nil, - ), - WiredTxPackets: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "WiredTxPackets"), - "Client Wired Transmit Packets", labels, nil, - ), - DpiStatsApp: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "DpiStatsApp"), - "Client DPI Stats App", labels, nil, - ), - DpiStatsCat: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "DpiStatsCat"), - "Client DPI Stats Cat", labels, nil, - ), - DpiStatsRxBytes: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "DpiStatsRxBytes"), - "Client DPI Stats Receive Bytes", labels, nil, - ), - DpiStatsRxPackets: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "DpiStatsRxPackets"), - "Client DPI Stats Receive Packets", labels, nil, - ), - DpiStatsTxBytes: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "DpiStatsTxBytes"), - "Client DPI Stats Transmit Bytes", labels, nil, - ), - DpiStatsTxPackets: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "DpiStatsTxPackets"), - "Client DPI Stats Transmit Packets", labels, nil, - ), + Anomalies: prometheus.NewDesc(ns+"Anomalies", "Client Anomalies", labels, nil), + BytesR: prometheus.NewDesc(ns+"BytesR", "Client Data Rate", labels, nil), + CCQ: prometheus.NewDesc(ns+"CCQ", "Client Connection Quality", labels, nil), + Noise: prometheus.NewDesc(ns+"Noise", "Client AP Noise", labels, nil), + RoamCount: prometheus.NewDesc(ns+"RoamCount", "Client Roam Counter", labels, nil), + RSSI: prometheus.NewDesc(ns+"RSSI", "Client RSSI", labels, nil), + RxBytes: prometheus.NewDesc(ns+"RxBytes", "Client Receive Bytes", labels, nil), + RxBytesR: prometheus.NewDesc(ns+"RxBytesR", "Client Receive Data Rate", labels, nil), + RxPackets: prometheus.NewDesc(ns+"RxPackets", "Client Receive Packets", labels, nil), + RxRate: prometheus.NewDesc(ns+"RxRate", "Client Receive Rate", labels, nil), + Signal: prometheus.NewDesc(ns+"Signal", "Client Signal Strength", labels, nil), + TxBytes: prometheus.NewDesc(ns+"TxBytes", "Client Transmit Bytes", labels, nil), + TxBytesR: prometheus.NewDesc(ns+"TxBytesR", "Client Transmit Data Rate", labels, nil), + TxPackets: prometheus.NewDesc(ns+"TxPackets", "Client Transmit Packets", labels, nil), + TxPower: prometheus.NewDesc(ns+"TxPower", "Client Transmit Power", labels, nil), + TxRate: prometheus.NewDesc(ns+"TxRate", "Client Transmit Rate", labels, nil), + Uptime: prometheus.NewDesc(ns+"Uptime", "Client Uptime", labels, nil), + WifiTxAttempts: prometheus.NewDesc(ns+"WifiTxAttempts", "Client Wifi Transmit Attempts", labels, nil), + WiredRxBytes: prometheus.NewDesc(ns+"WiredRxBytes", "Client Wired Receive Bytes", labels, nil), + WiredRxBytesR: prometheus.NewDesc(ns+"WiredRxBytesR", "Client Wired Receive Data Rate", labels, nil), + WiredRxPackets: prometheus.NewDesc(ns+"WiredRxPackets", "Client Wired Receive Packets", labels, nil), + WiredTxBytes: prometheus.NewDesc(ns+"WiredTxBytes", "Client Wired Transmit Bytes", labels, nil), + WiredTxBytesR: prometheus.NewDesc(ns+"WiredTxBytesR", "Client Wired Data Rate", labels, nil), + WiredTxPackets: prometheus.NewDesc(ns+"WiredTxPackets", "Client Wired Transmit Packets", labels, nil), + DpiStatsApp: prometheus.NewDesc(ns+"DpiStatsApp", "Client DPI Stats App", labels, nil), + DpiStatsCat: prometheus.NewDesc(ns+"DpiStatsCat", "Client DPI Stats Cat", labels, nil), + DpiStatsRxBytes: prometheus.NewDesc(ns+"DpiStatsRxBytes", "Client DPI Stats Receive Bytes", labels, nil), + DpiStatsRxPackets: prometheus.NewDesc(ns+"DpiStatsRxPackets", "Client DPI Stats Receive Packets", labels, nil), + DpiStatsTxBytes: prometheus.NewDesc(ns+"DpiStatsTxBytes", "Client DPI Stats Transmit Bytes", labels, nil), + DpiStatsTxPackets: prometheus.NewDesc(ns+"DpiStatsTxPackets", "Client DPI Stats Transmit Packets", labels, nil), } } diff --git a/promunifi/collector.go b/promunifi/collector.go index d2661c82..251d8bc3 100644 --- a/promunifi/collector.go +++ b/promunifi/collector.go @@ -7,6 +7,7 @@ import ( "github.com/davidnewhall/unifi-poller/metrics" "github.com/prometheus/client_golang/prometheus" + "golift.io/unifi" ) // UnifiCollectorCnfg defines the data needed to collect and report UniFi Metrics. @@ -127,12 +128,12 @@ func (u *unifiCollector) Collect(ch chan<- prometheus.Metric) { } } +/* func (u *unifiCollector) export(ch chan<- prometheus.Metric, exports []*metricExports, ts time.Time) { for _, e := range exports { v, ok := e.Value.(float64) if !ok { j, ok := e.Value.(int64) - v = float64(j) if !ok { // log.Printf("not a number: %v %v", e.Value, e.Desc.String()) if u.Config.ReportErrors { @@ -140,7 +141,29 @@ func (u *unifiCollector) export(ch chan<- prometheus.Metric, exports []*metricEx } continue } + v = float64(j) } ch <- prometheus.NewMetricWithTimestamp(ts, prometheus.MustNewConstMetric(e.Desc, e.ValueType, v, e.Labels...)) } +}*/ + +func (u *unifiCollector) export(ch chan<- prometheus.Metric, exports []*metricExports, ts time.Time) { + for _, e := range exports { + var val float64 + switch v := e.Value.(type) { + case float64: + val = v + case int64: + val = float64(v) + case unifi.FlexInt: + val = v.Val + default: + if u.Config.ReportErrors { + ch <- prometheus.NewInvalidMetric(e.Desc, fmt.Errorf("not a number: %v", e.Value)) + } + continue + } + ch <- prometheus.NewMetricWithTimestamp(ts, prometheus.MustNewConstMetric(e.Desc, e.ValueType, val, e.Labels...)) + } + } diff --git a/promunifi/site.go b/promunifi/site.go index defaaf17..c61c701f 100644 --- a/promunifi/site.go +++ b/promunifi/site.go @@ -34,106 +34,37 @@ type site struct { // XXX: The help values can be more verbose. func descSite(ns string) *site { + if ns += "_site_"; ns == "_site_" { + ns = "site_" + } + labels := []string{"name", "desc", "site_name", "subsystem", "status", "gwversion"} - ns2 := "site" return &site{ - NumUser: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumUser"), - "NumUser", labels, nil, - ), - NumGuest: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumGuest"), - "NumGuest", labels, nil, - ), - NumIot: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumIot"), - "NumIot", labels, nil, - ), - TxBytesR: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "TxBytesR"), - "TxBytesR", labels, nil, - ), - RxBytesR: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RxBytesR"), - "RxBytesR", labels, nil, - ), - NumAp: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumAp"), - "NumAp", labels, nil, - ), - NumAdopted: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumAdopted"), - "NumAdopted", labels, nil, - ), - NumDisabled: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumDisabled"), - "NumDisabled", labels, nil, - ), - NumDisconnected: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumDisconnected"), - "NumDisconnected", labels, nil, - ), - NumPending: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumPending"), - "NumPending", labels, nil, - ), - NumGw: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumGw"), - "NumGw", labels, nil, - ), - NumSw: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumSw"), - "NumSw", labels, nil, - ), - NumSta: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "NumSta"), - "NumSta", labels, nil, - ), - Latency: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "Latency"), - "Latency", labels, nil, - ), - Drops: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "Drops"), - "Drops", labels, nil, - ), - XputUp: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "XputUp"), - "XputUp", labels, nil, - ), - XputDown: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "XputDown"), - "XputDown", labels, nil, - ), - SpeedtestPing: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "SpeedtestPing"), - "SpeedtestPing", labels, nil, - ), - RemoteUserNumActive: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RemoteUserNumActive"), - "RemoteUserNumActive", labels, nil, - ), - RemoteUserNumInactive: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RemoteUserNumInactive"), - "RemoteUserNumInactive", labels, nil, - ), - RemoteUserRxBytes: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RemoteUserRxBytes"), - "RemoteUserRxBytes", labels, nil, - ), - RemoteUserTxBytes: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RemoteUserTxBytes"), - "RemoteUserTxBytes", labels, nil, - ), - RemoteUserRxPackets: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RemoteUserRxPackets"), - "RemoteUserRxPackets", labels, nil, - ), - RemoteUserTxPackets: prometheus.NewDesc( - prometheus.BuildFQName(ns, ns2, "RemoteUserTxPackets"), - "RemoteUserTxPackets", labels, nil, - ), + NumUser: prometheus.NewDesc(ns+"NumUser", "NumUser", labels, nil), + NumGuest: prometheus.NewDesc(ns+"NumGuest", "NumGuest", labels, nil), + NumIot: prometheus.NewDesc(ns+"NumIot", "NumIot", labels, nil), + TxBytesR: prometheus.NewDesc(ns+"TxBytesR", "TxBytesR", labels, nil), + RxBytesR: prometheus.NewDesc(ns+"RxBytesR", "RxBytesR", labels, nil), + NumAp: prometheus.NewDesc(ns+"NumAp", "NumAp", labels, nil), + NumAdopted: prometheus.NewDesc(ns+"NumAdopted", "NumAdopted", labels, nil), + NumDisabled: prometheus.NewDesc(ns+"NumDisabled", "NumDisabled", labels, nil), + NumDisconnected: prometheus.NewDesc(ns+"NumDisconnected", "NumDisconnected", labels, nil), + NumPending: prometheus.NewDesc(ns+"NumPending", "NumPending", labels, nil), + NumGw: prometheus.NewDesc(ns+"NumGw", "NumGw", labels, nil), + NumSw: prometheus.NewDesc(ns+"NumSw", "NumSw", labels, nil), + NumSta: prometheus.NewDesc(ns+"NumSta", "NumSta", labels, nil), + Latency: prometheus.NewDesc(ns+"Latency", "Latency", labels, nil), + Drops: prometheus.NewDesc(ns+"Drops", "Drops", labels, nil), + XputUp: prometheus.NewDesc(ns+"XputUp", "XputUp", labels, nil), + XputDown: prometheus.NewDesc(ns+"XputDown", "XputDown", labels, nil), + SpeedtestPing: prometheus.NewDesc(ns+"SpeedtestPing", "SpeedtestPing", labels, nil), + RemoteUserNumActive: prometheus.NewDesc(ns+"RemoteUserNumActive", "RemoteUserNumActive", labels, nil), + RemoteUserNumInactive: prometheus.NewDesc(ns+"RemoteUserNumInactive", "RemoteUserNumInactive", labels, nil), + RemoteUserRxBytes: prometheus.NewDesc(ns+"RemoteUserRxBytes", "RemoteUserRxBytes", labels, nil), + RemoteUserTxBytes: prometheus.NewDesc(ns+"RemoteUserTxBytes", "RemoteUserTxBytes", labels, nil), + RemoteUserRxPackets: prometheus.NewDesc(ns+"RemoteUserRxPackets", "RemoteUserRxPackets", labels, nil), + RemoteUserTxPackets: prometheus.NewDesc(ns+"RemoteUserTxPackets", "RemoteUserTxPackets", labels, nil), } }