Skip to main content

Instrument your FastAPI with Prometheus metrics

Project description

Prometheus FastAPI Instrumentator

PyPI version Maintenance downloads

release test branches codecov Code style: black

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


Download files

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

Source Distribution

prometheus-fastapi-instrumentator-1.1.1.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file prometheus-fastapi-instrumentator-1.1.1.tar.gz.

File metadata

File hashes

Hashes for prometheus-fastapi-instrumentator-1.1.1.tar.gz
Algorithm Hash digest
SHA256 9a82bcef7e382aa1c32cc133d06dee1de8ffecd284bf19b5264730e799f4cec7
MD5 6275d9accbf3a14d55a96fbf872f2963
BLAKE2b-256 0ca4b27bf14df92106f255b228bf4499396a4a83a324274a394c31ba2c4314e9

See more details on using hashes here.

File details

Details for the file prometheus_fastapi_instrumentator-1.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for prometheus_fastapi_instrumentator-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b0fc01fddb392836e8c51fc1c6fb86d9731d3d7909fe6ae517ccea54aded23d5
MD5 c1dd54e00fe667787f5187f4e06e48db
BLAKE2b-256 c8874201d4ecd56e53d3d4d8b73dfa98b64bbe7762d1f97cfa28fb1f0ac48c5f

See more details on using hashes here.

Supported by

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