Unverified Commit f3f8d8ff authored by daniel-salib's avatar daniel-salib Committed by GitHub
Browse files

implement prometheus fast-api-instrumentor for http service metrics (#15657)

parent 26df46ee
...@@ -311,6 +311,7 @@ def mount_metrics(app: FastAPI): ...@@ -311,6 +311,7 @@ def mount_metrics(app: FastAPI):
# See https://prometheus.github.io/client_python/multiprocess/ # See https://prometheus.github.io/client_python/multiprocess/
from prometheus_client import (CollectorRegistry, make_asgi_app, from prometheus_client import (CollectorRegistry, make_asgi_app,
multiprocess) multiprocess)
from prometheus_fastapi_instrumentator import Instrumentator
prometheus_multiproc_dir_path = os.getenv("PROMETHEUS_MULTIPROC_DIR", None) prometheus_multiproc_dir_path = os.getenv("PROMETHEUS_MULTIPROC_DIR", None)
if prometheus_multiproc_dir_path is not None: if prometheus_multiproc_dir_path is not None:
...@@ -318,6 +319,16 @@ def mount_metrics(app: FastAPI): ...@@ -318,6 +319,16 @@ def mount_metrics(app: FastAPI):
prometheus_multiproc_dir_path) prometheus_multiproc_dir_path)
registry = CollectorRegistry() registry = CollectorRegistry()
multiprocess.MultiProcessCollector(registry) multiprocess.MultiProcessCollector(registry)
Instrumentator(
excluded_handlers=[
"/metrics",
"/health",
"/load",
"/ping",
"/version",
],
registry=registry,
).add().instrument(app).expose(app)
# Add prometheus asgi middleware to route /metrics requests # Add prometheus asgi middleware to route /metrics requests
metrics_route = Mount("/metrics", make_asgi_app(registry=registry)) metrics_route = Mount("/metrics", make_asgi_app(registry=registry))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment