WIP: Add the django standard metrics

This commit is contained in:
lagertonne 2024-11-06 22:21:32 +01:00
parent b9cfdf5456
commit 901c00a423
4 changed files with 17 additions and 0 deletions

8
core/core/metrics.py Normal file
View file

@ -0,0 +1,8 @@
from prometheus_client import Counter, Gauge
from django_prometheus.middleware import (
PrometheusAfterMiddleware,
)
class AppMetricsAfterMiddleware(PrometheusAfterMiddleware):
def register_metric(self, metric_cls, name, documentation, labelnames=(), **kwargs):
return super().register_metric(metric_cls, name, documentation, labelnames=labelnames, **kwargs)

View file

@ -50,6 +50,7 @@ INSTALLED_APPS = [
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'django_extensions', 'django_extensions',
'django_prometheus',
'rest_framework', 'rest_framework',
'knox', 'knox',
'drf_yasg', 'drf_yasg',
@ -85,6 +86,7 @@ SWAGGER_SETTINGS = {
} }
MIDDLEWARE = [ MIDDLEWARE = [
'django_prometheus.middleware.PrometheusBeforeMiddleware',
'django.middleware.security.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware', 'django.middleware.common.CommonMiddleware',
@ -92,6 +94,7 @@ MIDDLEWARE = [
'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware', 'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django_prometheus.middleware.PrometheusAfterMiddleware',
] ]
ROOT_URLCONF = 'core.urls' ROOT_URLCONF = 'core.urls'
@ -210,4 +213,6 @@ CHANNEL_LAYERS = {
} }
PROMETHEUS_METRIC_NAMESPACE = 'c3lf'
TEST_RUNNER = 'core.test_runner.FastTestRunner' TEST_RUNNER = 'core.test_runner.FastTestRunner'

View file

@ -18,6 +18,7 @@ from django.contrib import admin
from django.urls import path, include from django.urls import path, include
from .version import get_info from .version import get_info
from .metrics import CustomMetrics
urlpatterns = [ urlpatterns = [
path('djangoadmin/', admin.site.urls), path('djangoadmin/', admin.site.urls),
@ -32,4 +33,5 @@ urlpatterns = [
path('api/2/', include('notify_sessions.api_v2')), path('api/2/', include('notify_sessions.api_v2')),
path('api/2/', include('authentication.api_v2')), path('api/2/', include('authentication.api_v2')),
path('api/', get_info), path('api/', get_info),
path('', include('django_prometheus.urls')),
] ]

View file

@ -41,3 +41,5 @@ urllib3==2.1.0
uvicorn==0.24.0.post1 uvicorn==0.24.0.post1
watchfiles==0.21.0 watchfiles==0.21.0
websockets==12.0 websockets==12.0
django-prometheus==2.3.1
prometheus_client==0.21.0