Instrument your FastAPI with Prometheus metrics
Project description
Prometheus FastAPI Instrumentator
Instruments your FastAPI with Prometheus metrics. Install with:
pip install prometheus-fastapi-instrumentator
Fast Track
from prometheus_fastapi_instrumentator import Instrumentator
Instrumentator().instrument(app).expose(app)
With this single line FastAPI is instrumented and all Prometheus metrics used
in the FastAPI app can be scraped via the added /metrics
endpoint.
The exporter includes the single metric http_request_duration_seconds
.
Everything around it can be configured and deactivated. These
options include:
- Status codes are grouped into
2xx
,3xx
and so on. - Requests without a matching template are grouped into the handler
none
. - Renaming of labels and the metric.
- Regex patterns to ignore certain routes.
See the Example with all parameters for all possible options or check out the documentation itself.
Example with all parameters
from prometheus_fastapi_instrumentator import PrometheusFastApiInstrumentator
PrometheusFastApiInstrumentator(
should_group_status_codes=False,
should_ignore_untemplated=True,
should_group_untemplated=False,
excluded_handlers=["/metrics", "/admin"],
buckets=[1, 2, 3, 4, 5],
metric_name="my_custom_metric_name",
label_names=("method_type", "path", "status_code",),
).instrument(app).expose(app, "/prometheus_metrics")
instrument
: Instruments the given FastAPI based on the configuration in
the constructur of the exporter class.
expose
: Completely separate from instrument
and not necessary for
instrumentation. Just a simple option to expose metrics by adding an endpoint
to the given FastAPI. Supports multiprocess mode.
Prerequesites
python = "^3.6"
(tested with 3.6 and 3.8)fastapi = ">=0.38.1, <=1.0.0"
(tested with 0.38.1 and 0.59.0)prometheus-client = "^0.8.0"
(tested with 0.8.0)
Development
Developing and building this package on a local machine requires
Python Poetry. I recommend to run Poetry in
tandem with Pyenv. Once the repository is
cloned, run poetry install
and poetry shell
. From here you may start the
IDE of your choice.
For formatting, the black formatter is used.
Run black .
in the repository to reformat source files. It will respect
the black configuration in the pyproject.toml
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for prometheus-fastapi-instrumentator-1.1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a82bcef7e382aa1c32cc133d06dee1de8ffecd284bf19b5264730e799f4cec7 |
|
MD5 | 6275d9accbf3a14d55a96fbf872f2963 |
|
BLAKE2b-256 | 0ca4b27bf14df92106f255b228bf4499396a4a83a324274a394c31ba2c4314e9 |
Hashes for prometheus_fastapi_instrumentator-1.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b0fc01fddb392836e8c51fc1c6fb86d9731d3d7909fe6ae517ccea54aded23d5 |
|
MD5 | c1dd54e00fe667787f5187f4e06e48db |
|
BLAKE2b-256 | c8874201d4ecd56e53d3d4d8b73dfa98b64bbe7762d1f97cfa28fb1f0ac48c5f |