authentik.root.monitoring
Metrics view
1"""Metrics view""" 2 3from django.db import connections 4from django.db.utils import OperationalError 5from django.dispatch import Signal 6from django.http import HttpRequest, HttpResponse 7from django.views import View 8from django_prometheus.exports import ExportToDjangoView 9 10monitoring_set = Signal() 11 12 13class MetricsView(View): 14 """Wrapper around ExportToDjangoView with authentication, accessed by the authentik router""" 15 16 def get(self, request: HttpRequest) -> HttpResponse: 17 """Check for HTTP-Basic auth""" 18 monitoring_set.send_robust(self) 19 return ExportToDjangoView(request) 20 21 22class LiveView(View): 23 """View for liveness probe, always returns Http 200""" 24 25 def dispatch(self, request: HttpRequest) -> HttpResponse: 26 return HttpResponse(status=200) 27 28 29class ReadyView(View): 30 """View for readiness probe, always returns Http 200, unless sql is down""" 31 32 def check_db(self): 33 for db_conn in connections.all(): 34 # Force connection reload 35 db_conn.connect() 36 _ = db_conn.cursor() 37 38 def dispatch(self, request: HttpRequest) -> HttpResponse: 39 try: 40 self.check_db() 41 except OperationalError: # pragma: no cover 42 return HttpResponse(status=503) 43 return HttpResponse(status=200)
monitoring_set =
<django.dispatch.dispatcher.Signal object>
class
MetricsView(django.views.generic.base.View):
14class MetricsView(View): 15 """Wrapper around ExportToDjangoView with authentication, accessed by the authentik router""" 16 17 def get(self, request: HttpRequest) -> HttpResponse: 18 """Check for HTTP-Basic auth""" 19 monitoring_set.send_robust(self) 20 return ExportToDjangoView(request)
Wrapper around ExportToDjangoView with authentication, accessed by the authentik router
class
LiveView(django.views.generic.base.View):
23class LiveView(View): 24 """View for liveness probe, always returns Http 200""" 25 26 def dispatch(self, request: HttpRequest) -> HttpResponse: 27 return HttpResponse(status=200)
View for liveness probe, always returns Http 200
class
ReadyView(django.views.generic.base.View):
30class ReadyView(View): 31 """View for readiness probe, always returns Http 200, unless sql is down""" 32 33 def check_db(self): 34 for db_conn in connections.all(): 35 # Force connection reload 36 db_conn.connect() 37 _ = db_conn.cursor() 38 39 def dispatch(self, request: HttpRequest) -> HttpResponse: 40 try: 41 self.check_db() 42 except OperationalError: # pragma: no cover 43 return HttpResponse(status=503) 44 return HttpResponse(status=200)
View for readiness probe, always returns Http 200, unless sql is down