From d601696a69b70149144ef80ad0265e8c67d8cc61 Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Wed, 2 Sep 2020 15:14:10 +0000 Subject: [PATCH] Support sending the OpenMetrics format when asked. Recent prometheus_client versions (v0.4.1 and later) support sending the OpenMetrics format when clients negotiate for it via the HTTP Accept header. --- prometheus_flask_exporter/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/prometheus_flask_exporter/__init__.py b/prometheus_flask_exporter/__init__.py index 3cf7a43..3f4c37f 100644 --- a/prometheus_flask_exporter/__init__.py +++ b/prometheus_flask_exporter/__init__.py @@ -12,7 +12,7 @@ from flask.views import MethodViewType from werkzeug.serving import is_running_from_reloader from prometheus_client import Counter, Histogram, Gauge, Summary -from prometheus_client import generate_latest, CONTENT_TYPE_LATEST +from prometheus_client.exposition import choose_encoder if sys.version_info[0:2] >= (3, 4): # Python v3.4+ has a built-in has __wrapped__ attribute @@ -265,7 +265,8 @@ def prometheus_metrics(): if 'prometheus_multiproc_dir' in os.environ: multiprocess.MultiProcessCollector(registry) - headers = {'Content-Type': CONTENT_TYPE_LATEST} + generate_latest, content_type = choose_encoder(request.headers.get("Accept")) + headers = {'Content-Type': content_type} return generate_latest(registry), 200, headers def start_http_server(self, port, host='0.0.0.0', endpoint='/metrics'):