diff --git a/integrations/influxunifi/events.go b/integrations/influxunifi/events.go index 3173794f..417f6258 100644 --- a/integrations/influxunifi/events.go +++ b/integrations/influxunifi/events.go @@ -1,11 +1,19 @@ package influxunifi import ( + "time" + "github.com/unifi-poller/unifi" ) // batchIDS generates intrusion detection datapoints for InfluxDB. func (u *InfluxUnifi) batchIDS(r report, i *unifi.IDS) { + if time.Since(i.Datetime) > u.Interval.Duration+time.Second { + return // The event is older than our interval, ignore it. + } + + r.addIDS() + fields := map[string]interface{}{ "dest_port": i.DestPort, "src_port": i.SrcPort, @@ -56,6 +64,12 @@ func (u *InfluxUnifi) batchIDS(r report, i *unifi.IDS) { // batchEvents generates events from UniFi for InfluxDB. func (u *InfluxUnifi) batchEvent(r report, i *unifi.Event) { // nolint: funlen + if time.Since(i.Datetime) > u.Interval.Duration+time.Second { + return // The event is older than our interval, ignore it. + } + + r.addEvent() + fields := map[string]interface{}{ "msg": i.Msg, // contains user[] or guest[] or admin[] "duration": i.Duration.Val, // probably microseconds? diff --git a/integrations/influxunifi/influxdb.go b/integrations/influxunifi/influxdb.go index b283d590..0dd391e4 100644 --- a/integrations/influxunifi/influxdb.go +++ b/integrations/influxunifi/influxdb.go @@ -264,10 +264,8 @@ func (u *InfluxUnifi) switchExport(r report, v interface{}) { case *unifi.Client: u.batchClient(r, v) case *unifi.Event: - r.addEvent() u.batchEvent(r, v) case *unifi.IDS: - r.addIDS() u.batchIDS(r, v) default: u.Collector.LogErrorf("invalid export type: %T", v)