Merge pull request 'metrics: Add ticket counters' (#110) from lagertonne/add-ticket-metrics into testing
All checks were successful
/ test (push) Successful in 2m39s
/ deploy (push) Successful in 4m32s

This commit is contained in:
lagertonne 2024-12-27 08:41:55 +00:00
commit 7208aede8d

View file

@ -2,6 +2,8 @@ from django.apps import apps
from prometheus_client.core import CounterMetricFamily, REGISTRY from prometheus_client.core import CounterMetricFamily, REGISTRY
from django.db.models import Case, Value, When, BooleanField, Count from django.db.models import Case, Value, When, BooleanField, Count
from inventory.models import Item from inventory.models import Item
from tickets.models import IssueThread
class ItemCountCollector(object): class ItemCountCollector(object):
@ -32,7 +34,29 @@ class ItemCountCollector(object):
yield counter 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: try:
REGISTRY.register(ItemCountCollector()) REGISTRY.register(ItemCountCollector())
REGISTRY.register(TicketCountCollector())
except Exception as e: except Exception as e:
print(e) print(e)