mirror of
https://github.com/unpoller/unpoller.git
synced 2026-04-05 08:54:09 -04:00
Collect port anomalies from the UniFi v2 API endpoint
/proxy/network/v2/api/site/{site}/ports/port-anomalies and export
them to all output plugins (Prometheus, InfluxDB, DataDog, OpenTelemetry).
Metrics exported per port:
- port_anomaly_count – number of anomaly events
- port_anomaly_last_seen – unix timestamp of last event
Labels: site_name, source, device_mac, port_idx, anomaly_type
Bumps github.com/unpoller/unifi/v5 to v5.24.0 which adds GetPortAnomalies.
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
28 lines
586 B
Go
28 lines
586 B
Go
package influxunifi
|
|
|
|
import (
|
|
"github.com/unpoller/unifi/v5"
|
|
)
|
|
|
|
// batchPortAnomaly generates a port anomaly datapoint for InfluxDB.
|
|
func (u *InfluxUnifi) batchPortAnomaly(r report, a *unifi.PortAnomaly) {
|
|
if a == nil {
|
|
return
|
|
}
|
|
|
|
tags := map[string]string{
|
|
"site_name": a.SiteName,
|
|
"source": a.SourceName,
|
|
"device_mac": a.DeviceMAC,
|
|
"port_idx": a.PortIdx.Txt,
|
|
"anomaly_type": a.AnomalyType,
|
|
}
|
|
|
|
fields := map[string]any{
|
|
"count": a.Count.Val,
|
|
"last_seen": a.LastSeen.Val,
|
|
}
|
|
|
|
r.send(&metric{Table: "port_anomaly", Tags: tags, Fields: fields})
|
|
}
|