Skip to main content
Prometheus Flask exporter
=========================

|Travis| |PyPI| |PyPI| |Coverage Status| |Code Climate|

This library provides HTTP request metrics to export into
`Prometheus <https://prometheus.io/>`__. It can also track method
invocations using convenient functions.

Usage
-----

.. code:: python

from flask import Flask, request
from prometheus_flask_exporter import PrometheusMetrics

app = Flask(__name__)
metrics = PrometheusMetrics(app)

# static information as metric
metrics.info('app_info', 'Application info', version='1.0.3')

@app.route('/')
def main():
pass # requests tracked by default

@app.route('/skip')
@metrics.do_not_track()
def skip():
pass # default metrics are not collected

@app.route('/<item_type>')
@metrics.do_not_track()
@metrics.counter('invocation_by_type', 'Number of invocations by type',
labels={'item_type': lambda: request.view_args['type']})
def by_type(item_type):
pass # only the counter is collected, not the default metrics

@app.route('/long-running')
@metrics.gauge('in_progress', 'Long running requests in progress')
def long_running():
pass

@app.route('/status/<int:status>')
@metrics.do_not_track()
@metrics.summary('requests_by_status', 'Request latencies by status',
labels={'status': lambda r: r.status_code})
@metrics.histogram('requests_by_status_and_path', 'Request latencies by status and path',
labels={'status': lambda r: r.status_code, 'path': lambda: request.path})
def echo_status(status):
return 'Status: %s' % status, status

Default metrics
---------------

The following metrics are exported by default (unless the
``export_defaults`` is set to ``False``).

- ``flask_http_request_duration_seconds`` (Histogram)
Labels: ``method``, ``path`` and ``status``.
Flask HTTP request duration in seconds for all Flask requests.
- ``flask_http_request_total`` (Counter)
Labels: ``method`` and ``status``. Total number of HTTP requests for
all Flask requests.
- ``flask_exporter_info`` (Gauge)
Information about the Prometheus Flask exporter itself (e.g.
``version``).

Configuration
-------------

By default, the metrics are exposed on the same Flask application on the
``/metrics`` endpoint and using the core Prometheus registry. If this
doesn't suit your needs, set the ``path`` argument to ``None`` and/or
the ``export_defaults`` argument to ``False`` plus change the
``registry`` argument if needed. The ``group_by_endpoint`` constructor
flag makes the default request duration metric tracked by endpoint
(function) instead of URI path.

The ``register_endpoint`` allows exposing the metrics endpoint on a
specific path. It also allows passing in a Flask application to register
it on but defaults to the main one if not defined.

Similarly, the ``start_http_server`` allows exposing the endpoint on an
independent Flask application on a selected HTTP port. It also supports
overriding the endpoint's path and the HTTP listen address.

Labels
------

When defining labels for metrics on functions, the following values are
supported in the dictionary:

- A simple static value
- A no-argument callable
- A single argument callable that will receive the Flask response as
the argument

Label values are evaluated within the request context.

Application information
-----------------------

The ``PrometheusMetrics.info(..)`` method provides a way to expose
information as a ``Gauge`` metric, the application version for example.

The metric is returned from the method to allow changing its value from
the default ``1``:

.. code:: python

metrics = PrometheusMetrics(app)
info = metrics.info('dynamic_info', 'Something dynamic')
...
info.set(42.1)

License
-------

MIT

.. |Travis| image:: https://img.shields.io/travis/rycus86/prometheus_flask_exporter.svg
:target: https://travis-ci.org/rycus86/prometheus_flask_exporter
.. |PyPI| image:: https://img.shields.io/pypi/v/prometheus-flask-exporter.svg
:target: https://pypi.python.org/pypi/prometheus-flask-exporter
.. |PyPI| image:: https://img.shields.io/pypi/pyversions/prometheus-flask-exporter.svg
:target: https://pypi.python.org/pypi/prometheus-flask-exporter
.. |Coverage Status| image:: https://coveralls.io/repos/github/rycus86/prometheus_flask_exporter/badge.svg?branch=master
:target: https://coveralls.io/github/rycus86/prometheus_flask_exporter?branch=master
.. |Code Climate| image:: https://codeclimate.com/github/rycus86/prometheus_flask_exporter/badges/gpa.svg
:target: https://codeclimate.com/github/rycus86/prometheus_flask_exporter

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prometheus_flask_exporter-0.2.1.tar.gz (6.8 kB view details)

Uploaded Source

File details

Details for the file prometheus_flask_exporter-0.2.1.tar.gz.

File metadata

File hashes

Hashes for prometheus_flask_exporter-0.2.1.tar.gz
Algorithm Hash digest
SHA256 df8bae13a07baa212b648cc5d3f3b2796113fb9127b6a994b5648b879d4688e6
MD5 a8fd6bccdb64448e0c51c571b556b36e
BLAKE2b-256 ac5125c2f6d89e8f1f6a7b81681275ffc2ec009a0bbb25d645eafee45c29a4d5

See more details on using hashes here.

Release history Release notifications | RSS feed

0.23.2

2 files

0.23.1

2 files

0.23.0

2 files

0.22.4

2 files

0.22.3

2 files

0.22.2

2 files

0.22.1

2 files

0.22.0

2 files

0.21.0

2 files

0.20.3

2 files

0.20.2

2 files

0.20.1

2 files

0.20.0

2 files

0.19.0

2 files

0.18.7

2 files

0.18.6

2 files

0.18.5

2 files

0.18.4

2 files

0.18.3

2 files

0.18.2

1 file

0.18.1

1 file

0.18.0

1 file

0.17.0

1 file

0.16.5

1 file

0.16.4

1 file

0.16.0

1 file

0.15.4

1 file

0.15.1

1 file

0.15.0

1 file

0.14.1

1 file

0.14.0

1 file

0.13.0

1 file

0.12.2

1 file

0.12.1

1 file

0.12.0

1 file

0.11.0

1 file

0.10.0

1 file

0.9.3

1 file

0.9.1

1 file

0.9.0

1 file

0.8.2

1 file

0.8.1

1 file

0.8.0

1 file

0.7.4

1 file

0.7.3

1 file

0.7.2

1 file

0.7.1

1 file

0.7.0

1 file

0.6.0

1 file

0.5.1

1 file

0.5.0

1 file

0.4.1

1 file

0.4.0

1 file

0.3.4

1 file

0.3.3

1 file

0.3.1

1 file

0.3.0

1 file

0.2.3

1 file

0.2.2

1 file

This release

0.2.1 This release

1 file

0.2.0

1 file

0.1.2

1 file

0.1.1

1 file

0.1.0

1 file

0.0.9

1 file

0.0.8

1 file

0.0.7

1 file

0.0.6

1 file

0.0.5

1 file

0.0.4

1 file

0.0.2

1 file

0.0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page