
* admin: add worker metrics Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * admin: add version metrics Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * events: add gauge for system tasks Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * outposts: add gauge for last hello and connection status Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * root: re-add prometheus metrics to database Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * root: allow access to metrics without credentials when debug is on Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * root: add UpdatingGauge to auto-set value on load Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * flows: add metrics for cache and building Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * policies: add metrics for policy engine Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * events: add histogram for task durations Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * events: revert to gauge because values are updated on export view Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * core: add gauge to count all models Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org> * events: add metrics for events Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
27 lines
923 B
Python
27 lines
923 B
Python
"""authentik administration overview"""
|
|
from drf_spectacular.utils import extend_schema, inline_serializer
|
|
from prometheus_client import Gauge
|
|
from rest_framework.fields import IntegerField
|
|
from rest_framework.permissions import IsAdminUser
|
|
from rest_framework.request import Request
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
|
|
from authentik.root.celery import CELERY_APP
|
|
|
|
GAUGE_WORKERS = Gauge("authentik_admin_workers", "Currently connected workers")
|
|
|
|
|
|
class WorkerView(APIView):
|
|
"""Get currently connected worker count."""
|
|
|
|
permission_classes = [IsAdminUser]
|
|
|
|
@extend_schema(
|
|
responses=inline_serializer("Workers", fields={"count": IntegerField()})
|
|
)
|
|
def get(self, request: Request) -> Response:
|
|
"""Get currently connected worker count."""
|
|
count = len(CELERY_APP.control.ping(timeout=0.5))
|
|
return Response({"count": count})
|