initial prometheus commit

Co-authored-by: Wayne Witzel III <wayne@riotousliving.com>
Co-authored-by: Christian Adams <rooftopcellist@gmail.com>
This commit is contained in:
Wayne Witzel III
2019-04-05 15:46:54 -04:00
committed by Christian Adams
parent e9f2fddc7f
commit c3812de3d6
9 changed files with 247 additions and 6 deletions

15
awx/api/metrics.py Normal file
View File

@@ -0,0 +1,15 @@
# Copyright (c) 2017 Ansible, Inc.
# All Rights Reserved.
from django.conf.urls import url
from awx.api.views import (
MetricsView
)
urls = [
url(r'^$', MetricsView.as_view(), name='metrics_view'),
]
__all__ = ['urls']

View File

@@ -34,6 +34,8 @@ from awx.api.views import (
OAuth2ApplicationDetail,
)
from awx.api.views.metrics import MetricsView
from .organization import urls as organization_urls
from .user import urls as user_urls
from .project import urls as project_urls
@@ -133,6 +135,7 @@ v2_urls = [
url(r'^applications/(?P<pk>[0-9]+)/tokens/$', ApplicationOAuth2TokenList.as_view(), name='application_o_auth2_token_list'),
url(r'^tokens/$', OAuth2TokenList.as_view(), name='o_auth2_token_list'),
url(r'^', include(oauth2_urls)),
url(r'^metrics/$', MetricsView.as_view(), name='metrics_view'),
]
app_name = 'api'

46
awx/api/views/metrics.py Normal file
View File

@@ -0,0 +1,46 @@
# Copyright (c) 2018 Red Hat, Inc.
# All Rights Reserved.
# Python
import logging
# Django
from django.conf import settings
from django.utils.translation import ugettext_lazy as _
from django.utils.timezone import now
# Django REST Framework
from rest_framework.exceptions import PermissionDenied
from rest_framework.response import Response
from rest_framework.renderers import JSONRenderer, StaticHTMLRenderer
# AWX
# from awx.main.analytics import collectors
from awx.main.analytics.metrics import metrics
from awx.api import renderers
from awx.api.generics import (
APIView,
)
from awx.api.serializers import (
InventorySerializer,
ActivityStreamSerializer,
)
logger = logging.getLogger('awx.main.analytics')
class MetricsView(APIView):
view_name = _('Metrics')
swagger_topic = 'Metrics'
renderer_classes = [renderers.PlainTextRenderer,
renderers.BrowsableAPIRenderer,
JSONRenderer,]
def get(self, request, format='txt'):
''' Show Metrics Details '''
return Response(metrics().decode('UTF-8'))

View File

@@ -104,6 +104,7 @@ class ApiVersionRootView(APIView):
data['credential_input_sources'] = reverse('api:credential_input_source_list', request=request)
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['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)
@@ -278,6 +279,3 @@ class ApiV1ConfigView(APIView):
except Exception:
# FIX: Log
return Response({"error": _("Failed to remove license.")}, status=status.HTTP_400_BAD_REQUEST)