def setup_metrics(app: Flask): logger.info('Setting up metrics') # provide app's version and deploy environment/config name to set a gauge metric ErrorLogger.add_logging_callback( MetricsHandler.log_exception_for_metrics) MetricsHandler.setup_metrics_callbacks( app, app_version=app.config['VERSION']) if 'prometheus_multiproc_dir' in os.environ: # We're in a multiprocessing environment (i.e. gunicorn) registry = CollectorRegistry() multiprocess.MultiProcessCollector(registry) wsgi_app = make_wsgi_app(registry) else: wsgi_app = make_wsgi_app() # Plug metrics WSGI app to your main app with dispatcher app.wsgi_app = DispatcherMiddleware(app.wsgi_app, {"/metrics": wsgi_app})
def api_handle_error(error: CalculatedError): MetricsHandler.log_exception_for_metrics(error) response = jsonify(error.to_dict()) response.status_code = error.status_code return response