from prometheus_client import generate_latest, Gauge from django.db.models import Q from django.http import HttpResponse from queues.models import Queue, PlaylistSong # Export queue length g = Gauge('marietje_queue_length', 'Marietje queue length', ['name']) for queue in Queue.objects.all(): def _get_queue_length(): return PlaylistSong.objects.filter(Q(playlist=queue.playlist_id), Q(state=0) | Q(state=1)).count() g.labels(name=queue).set_function(_get_queue_length) def metrics(request): return HttpResponse(generate_latest(), content_type="text/plain")