mirror of
https://github.com/ansible/awx.git
synced 2026-03-04 02:01:01 -03:30
add broadcast websocket metrics
* Gather brroadcast websocket metrics and push them into redis every configurable seconds. * Pop metrics from redis in web view layer to display via the api on demand
This commit is contained in:
committed by
Ryan Petrello
parent
b6b9802f9e
commit
d6594ab602
@@ -15,6 +15,7 @@ from rest_framework.exceptions import PermissionDenied
|
||||
# AWX
|
||||
# from awx.main.analytics import collectors
|
||||
from awx.main.analytics.metrics import metrics
|
||||
from awx.main.analytics.broadcast_websocket import BroadcastWebsocketStatsManager
|
||||
from awx.api import renderers
|
||||
|
||||
from awx.api.generics import (
|
||||
@@ -39,3 +40,18 @@ class MetricsView(APIView):
|
||||
if (request.user.is_superuser or request.user.is_system_auditor):
|
||||
return Response(metrics().decode('UTF-8'))
|
||||
raise PermissionDenied()
|
||||
|
||||
class BroadcastWebsocketMetricsView(APIView):
|
||||
name = _('Broadcast Websockets')
|
||||
swagger_topic = 'Broadcast Websockets'
|
||||
|
||||
renderer_classes = [renderers.PlainTextRenderer,
|
||||
renderers.PrometheusJSONRenderer,
|
||||
renderers.BrowsableAPIRenderer,]
|
||||
|
||||
def get(self, request):
|
||||
''' Show Metrics Details '''
|
||||
if (request.user.is_superuser or request.user.is_system_auditor):
|
||||
stats_str = BroadcastWebsocketStatsManager.get_stats_sync() or b''
|
||||
return Response(stats_str.decode('UTF-8'))
|
||||
raise PermissionDenied()
|
||||
|
||||
@@ -107,6 +107,7 @@ class ApiVersionRootView(APIView):
|
||||
data['applications'] = reverse('api:o_auth2_application_list', request=request)
|
||||
data['tokens'] = reverse('api:o_auth2_token_list', request=request)
|
||||
data['metrics'] = reverse('api:metrics_view', request=request)
|
||||
data['broadcast_websocket_metrics'] = reverse('api:broadcast_websocket_metrics_view', request=request)
|
||||
data['inventory'] = reverse('api:inventory_list', request=request)
|
||||
data['inventory_scripts'] = reverse('api:inventory_script_list', request=request)
|
||||
data['inventory_sources'] = reverse('api:inventory_source_list', request=request)
|
||||
|
||||
Reference in New Issue
Block a user