Don't count events when events array empty
parent
7be80d8846
commit
33eaea1075
|
@ -221,7 +221,7 @@ class CustomCollector(object):
|
||||||
yield storage_used
|
yield storage_used
|
||||||
|
|
||||||
# count events
|
# count events
|
||||||
|
events = []
|
||||||
try:
|
try:
|
||||||
# change url from stats to events
|
# change url from stats to events
|
||||||
events_url = self.stats_url.replace('stats', 'events')
|
events_url = self.stats_url.replace('stats', 'events')
|
||||||
|
@ -235,19 +235,24 @@ class CustomCollector(object):
|
||||||
logging.error("URLError while opening Frigate events url %s: %s", self.stats_url, e)
|
logging.error("URLError while opening Frigate events url %s: %s", self.stats_url, e)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if len(events) > 0:
|
||||||
|
# events[0] is newest event, last element is oldest, don't need to sort
|
||||||
|
|
||||||
if not self.previous_event_id:
|
if not self.previous_event_id:
|
||||||
# ignore all previous events on startup
|
# ignore all previous events on startup, prometheus might have already counted them
|
||||||
self.previous_event_id = events[0]['id']
|
self.previous_event_id = events[0]['id']
|
||||||
self.previous_event_start_time = int(events[0]['start_time'])
|
self.previous_event_start_time = int(events[0]['start_time'])
|
||||||
|
|
||||||
camera_events = CounterMetricFamily('frigate_camera_events', 'Count of camera events since exporter started', labels=['camera', 'label'])
|
|
||||||
|
|
||||||
for event in events:
|
for event in events:
|
||||||
# break if event already counted
|
# break if event already counted
|
||||||
if event['id'] == self.previous_event_id:
|
if event['id'] == self.previous_event_id:
|
||||||
break
|
break
|
||||||
|
|
||||||
# count event in a dict
|
# break if event starts before previous event
|
||||||
|
if event['start_time'] < self.previous_event_start_time:
|
||||||
|
break
|
||||||
|
|
||||||
|
# store counted events in a dict
|
||||||
try:
|
try:
|
||||||
cam = self.all_events[event['camera']]
|
cam = self.all_events[event['camera']]
|
||||||
try:
|
try:
|
||||||
|
@ -259,13 +264,16 @@ class CustomCollector(object):
|
||||||
# create camera and label dict if not exists
|
# create camera and label dict if not exists
|
||||||
self.all_events.update({event['camera']: {event['label'] : 1} })
|
self.all_events.update({event['camera']: {event['label'] : 1} })
|
||||||
|
|
||||||
|
# don't recount events next time
|
||||||
|
self.previous_event_id = events[0]['id']
|
||||||
|
self.previous_event_start_time = int(events[0]['start_time'])
|
||||||
|
|
||||||
|
camera_events = CounterMetricFamily('frigate_camera_events', 'Count of camera events since exporter started', labels=['camera', 'label'])
|
||||||
|
|
||||||
for camera, cam_dict in self.all_events.items():
|
for camera, cam_dict in self.all_events.items():
|
||||||
for label, label_value in cam_dict.items():
|
for label, label_value in cam_dict.items():
|
||||||
camera_events.add_metric([camera, label], label_value)
|
camera_events.add_metric([camera, label], label_value)
|
||||||
|
|
||||||
self.previous_event_id = events[0]['id']
|
|
||||||
self.previous_event_start_time = int(events[0]['start_time'])
|
|
||||||
|
|
||||||
yield camera_events
|
yield camera_events
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue