metrics: Add ticket counters #110

Merged
lagertonne merged 1 commit from lagertonne/add-ticket-metrics into testing 2024-12-27 08:41:56 +00:00
Showing only changes of commit c569d29d8a - Show all commits

View file

@ -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)