util/metrics: remove metricqueue abstraction
This change replaces the metricqueue library with a native Prometheus client implementation with the intention to aggregated results with the Prometheus PushGateway. This change also adds instrumentation for greenlet context switches.
This commit is contained in:
parent
23c5120790
commit
4bf4ce33c9
57 changed files with 526 additions and 690 deletions
|
@ -10,7 +10,7 @@ from flask_restful import Resource, abort, Api, reqparse
|
|||
from flask_restful.utils.cors import crossdomain
|
||||
from jsonschema import validate, ValidationError
|
||||
|
||||
from app import app, metric_queue, authentication
|
||||
from app import app, authentication
|
||||
from auth.permissions import (ReadRepositoryPermission, ModifyRepositoryPermission,
|
||||
AdministerRepositoryPermission, UserReadPermission,
|
||||
UserAdminPermission)
|
||||
|
@ -25,7 +25,7 @@ from endpoints.csrf import csrf_protect
|
|||
from endpoints.exception import (Unauthorized, InvalidRequest, InvalidResponse,
|
||||
FreshLoginRequired, NotFound)
|
||||
from endpoints.decorators import check_anon_protection, require_xhr_from_browser, check_readonly
|
||||
from util.metrics.metricqueue import time_decorator
|
||||
from util.metrics.prometheus import timed_blueprint
|
||||
from util.names import parse_namespace_repository
|
||||
from util.pagination import encrypt_page_token, decrypt_page_token
|
||||
from util.request import get_request_ip
|
||||
|
@ -33,7 +33,7 @@ from __init__models_pre_oci import pre_oci_model as model
|
|||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
api_bp = Blueprint('api', __name__)
|
||||
api_bp = timed_blueprint(Blueprint('api', __name__))
|
||||
|
||||
|
||||
CROSS_DOMAIN_HEADERS = ['Authorization', 'Content-Type', 'X-Requested-With']
|
||||
|
@ -46,10 +46,8 @@ class ApiExceptionHandlingApi(Api):
|
|||
|
||||
api = ApiExceptionHandlingApi()
|
||||
api.init_app(api_bp)
|
||||
api.decorators = [csrf_protect(),
|
||||
crossdomain(origin='*', headers=CROSS_DOMAIN_HEADERS),
|
||||
process_oauth, time_decorator(api_bp.name, metric_queue),
|
||||
require_xhr_from_browser]
|
||||
api.decorators = [csrf_protect(), crossdomain(origin='*', headers=CROSS_DOMAIN_HEADERS),
|
||||
process_oauth, require_xhr_from_browser]
|
||||
|
||||
|
||||
def resource(*urls, **kwargs):
|
||||
|
@ -342,7 +340,7 @@ def max_json_size(max_size):
|
|||
def wrapped(self, *args, **kwargs):
|
||||
if request.is_json and len(request.get_data()) > max_size:
|
||||
raise InvalidRequest()
|
||||
|
||||
|
||||
return func(self, *args, **kwargs)
|
||||
return wrapped
|
||||
return wrapper
|
||||
|
|
Reference in a new issue