diff --git a/core/core/metrics.py b/core/core/metrics.py index 4964968..22041bf 100644 --- a/core/core/metrics.py +++ b/core/core/metrics.py @@ -2,6 +2,8 @@ from django.apps import apps from prometheus_client.core import CounterMetricFamily, REGISTRY from django.db.models import Case, Value, When, BooleanField, Count from inventory.models import Item +from tickets.models import IssueThread + class ItemCountCollector(object): @@ -32,7 +34,29 @@ class ItemCountCollector(object): yield counter +class TicketCountCollector(object): + + def collect(self): + counter = CounterMetricFamily("c3lf_ticket_count", "Current number of tickets", labels=['event', 'event_id']) + + yield counter + + if not apps.models_ready or not apps.apps_ready: + return + + queryset = ( + IssueThread.objects + .values('event__slug', 'event_id') + .annotate(amount=Count('id')) + ) + + for e in queryset: + counter.add_metric([e["event__slug"].lower()], e["amount"]) + + yield counter + try: REGISTRY.register(ItemCountCollector()) + REGISTRY.register(TicketCountCollector()) except Exception as e: print(e)