Flask Prometheus Metrics
Prometheus metrics exporter for Flask web applications.
flask_prometheus_metrics uses official Prometheus Python Client
providing basic metrics about process resource usage, app's requests metrics and information.
Installation
pip install -U flask_prometheus_metrics
You will need Flask to run examples below:
pip install -U 'flask_prometheus_metrics[flask]'
Usage
Run the following minimal example in Python shell:
from flask import Flask
from prometheus_client import make_wsgi_app
from werkzeug.middleware.dispatcher import DispatcherMiddleware
from werkzeug.serving import run_simple
from flask_prometheus_metrics import register_metrics
app = Flask(__name__)
@app.route("/")
def index():
return "Test"
# provide app's version and deploy environment/config name to set a gauge metric
register_metrics(app, app_version="v0.1.2", app_config="staging")
# Plug metrics WSGI app to your main app with dispatcher
dispatcher = DispatcherMiddleware(app.wsgi_app, {"/metrics": make_wsgi_app()})
run_simple(hostname="localhost", port=5000, application=dispatcher)
Then go over http://localhost:5000/, refresh page a few times and check your
app's metrics at http://localhost:5000/metrics.
See also example.py for more elaborate example of library usage in real Flask applications.
Metrics
flask_prometheus_metrics exposes the following application metrics:
app_request_latency_seconds(histogram) - Application request latencyapp_request_count_total(counter) - application request countapp_version_info(gauge) - application version
Library also provides some metrics about a Python interpreter used and process resource usage:
python_gc_objects_collected_total(counter) - objects collected during gcpython_gc_objects_uncollectable_total(counter) - uncollectable object found during GCpython_gc_collections_total(counter) - number of times this generation was collectedpython_info(gauge) - Python platform informationprocess_virtual_memory_bytes(gauge) - virtual memory size in bytesprocess_resident_memory_bytes(gauge) - resident memory size in bytesprocess_start_time_seconds(gauge) - start time of the process since unix epoch in secondsprocess_cpu_seconds_total(counter) - total user and system CPU time spent in secondsprocess_open_fds(gauge) - number of open file descriptorsprocess_max_fds(gauge) - maximum number of open file descriptors
Grafana dashboard
The metrics exported by flask_prometheus_metrics can be scraped by
Prometheus monitoring system and then visualized in
Grafana.
You can download Grafana dashboard crafted specifically for the flask_prometheus_metrics
default metrics here.
Testing
When testing Flask application with DispatcherMiddleware (see Usage example above)
you may want to use a little hack
in order to make Flask's test_client() work properly.
History
v1.0.0 (2019-06-06)
- Library is ready for production
- Minor setup.py fixes (#12)
v0.7.0 (2019-06-06)
- README.md adjusted to work both on GitHub and PyPi (#11)
v0.6.2 (2019-06-06)
- Codeclimate integration added
v0.6.1 (2019-06-06)
- Travis CI configuration fixed
v0.6.0 (2019-06-06)
- README and CHANGELOG as long description added
v0.5.0 (2019-06-06)
- CHANGELOG.md added
v0.4.0 (2019-06-06)
- Import simplified for metrics registration function
v0.3.1 (2019-06-05)
- Minor CI config fix
v0.3.0 (2019-06-05)
- Dependencies versions and safety checks added
v0.2.1 (2019-06-01)
- Update installation example in README
v0.2.0 (2019-06-01)
- README added, some code refactoring
v0.1.2 (2019-06-01)
- Version bumped
v0.1.1 (2019-06-01)
- Package versioning fix
v0.1.0 (2019-06-01)
- MVP
Metadata
Release files for flask-prometheus-metrics 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| flask_prometheus_metrics-1.0.0.tar.gz | 5.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| flask_prometheus_metrics-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.0 kB
Release files / flask_prometheus_metrics-1.0.0.tar.gz
| Download URL | flask_prometheus_metrics-1.0.0.tar.gz |
|---|---|
| Size | 5.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a2f79c40b53a04e861c4192514c043ff7d807e2fb0131b3eee29a6984206b22e
|
|
BLAKE2b-256 checksum How to use checksums |
74a283a59fb33c2024dff49d6a493cced94c34d57fbfe6ee1fa5e90faf86df90
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.1
|
Release files / flask_prometheus_metrics-1.0.0-py3-none-any.whl
| Download URL | flask_prometheus_metrics-1.0.0-py3-none-any.whl |
|---|---|
| Size | 6.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f28e8d3a9d0b7ee4761f1490c9653a95d83e11136ba6ecd010697aa9b3b83724
|
|
BLAKE2b-256 checksum How to use checksums |
e66409958116bdc267a1ee8f442e135166990d54403c8fdd4e8b3d275d7f7433
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.1
|
Security for flask-prometheus-metrics 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.