Compare commits

...

2 commits

Author SHA1 Message Date
7208aede8d 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
2024-12-27 08:41:55 +00:00
c569d29d8a metrics: Add ticket counters
All checks were successful
/ test (push) Successful in 2m41s
/ test (pull_request) Successful in 2m34s
2024-12-27 09:34:54 +01:00

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)