mirror of
https://gitlab.science.ru.nl/technicie/MarietjeDjango.git
synced 2025-12-10 10:52:21 +01:00
metrics: Add queue length in seconds
This commit is contained in:
@ -6,16 +6,25 @@ from queues.models import Queue, PlaylistSong
|
|||||||
|
|
||||||
# Export queue length
|
# Export queue length
|
||||||
queue_length_gauge = Gauge('marietje_queue_length', 'Marietje queue length', ['name'])
|
queue_length_gauge = Gauge('marietje_queue_length', 'Marietje queue length', ['name'])
|
||||||
|
# Export the queue duration
|
||||||
|
queue_duration_gauge = Gauge('marietje_queue_duration', 'Marietje queue duration in seconds', ['name'])
|
||||||
|
# Export the amount of different users in the queue
|
||||||
|
queue_users_gauge = Gauge('marietje_queue_users', 'Users holding a queue at some point', ['name'])
|
||||||
|
|
||||||
|
|
||||||
for queue in Queue.objects.all():
|
for queue in Queue.objects.all():
|
||||||
def _get_queue_length():
|
def _get_queue_length():
|
||||||
return (PlaylistSong.objects
|
return (PlaylistSong.objects
|
||||||
.filter(Q(playlist=queue.playlist_id), Q(state=0) | Q(state=1))
|
.filter(Q(playlist=queue.playlist_id), Q(state=0) | Q(state=1))
|
||||||
.count())
|
.count())
|
||||||
queue_length_gauge.labels(name=queue).set_function(_get_queue_length)
|
|
||||||
|
|
||||||
# Export the amount of different users in the queue
|
def _get_queue_duration():
|
||||||
queue_users_gauge = Gauge('marietje_queue_users', 'Users holding a queue at some point', ['name'])
|
playlist_songs = (PlaylistSong.objects
|
||||||
for queue in Queue.objects.all():
|
.filter(Q(playlist=queue.playlist_id), Q(state=0) | Q(state=1))
|
||||||
|
.select_related('song')
|
||||||
|
.all())
|
||||||
|
return sum(ps.song.duration for ps in playlist_songs)
|
||||||
|
|
||||||
def _get_queue_distinct_users():
|
def _get_queue_distinct_users():
|
||||||
# Ideally, we would use .distinct() here, but it is not supported on
|
# Ideally, we would use .distinct() here, but it is not supported on
|
||||||
# sqlite3. This makes testing a bit tedious. Also, it does not give me
|
# sqlite3. This makes testing a bit tedious. Also, it does not give me
|
||||||
@ -24,6 +33,9 @@ for queue in Queue.objects.all():
|
|||||||
return len(set(PlaylistSong.objects
|
return len(set(PlaylistSong.objects
|
||||||
.filter(Q(playlist=queue.playlist_id), Q(state=0) | Q(state=1))
|
.filter(Q(playlist=queue.playlist_id), Q(state=0) | Q(state=1))
|
||||||
.values_list('user')))
|
.values_list('user')))
|
||||||
|
|
||||||
|
queue_length_gauge.labels(name=queue).set_function(_get_queue_length)
|
||||||
|
queue_duration_gauge.labels(name=queue).set_function(_get_queue_duration)
|
||||||
queue_users_gauge.labels(name=queue).set_function(_get_queue_distinct_users)
|
queue_users_gauge.labels(name=queue).set_function(_get_queue_distinct_users)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user