Hey folks,
I have a similar setup to what is described here. The only difference is that I have nginx in front talking to gunicorn over sockets, but I don't think that matters as far as I can tell.
I wasn't able to use this code:
# Using multiprocess collector for registrydefmake_metrics_app():
registry=CollectorRegistry()
multiprocess.MultiProcessCollector(registry)
returnmake_asgi_app(registry=registry)
metrics_app=make_metrics_app()
app.mount("/metrics", metrics_app)It results in a page that gets a 307, so I implemented this:
@router.get("/metrics", response_class=PlainTextResponse, include_in_schema=False)asyncdefget_metrics() ->str:
""" Get prometheus metrics """registry=CollectorRegistry()
multiprocess.MultiProcessCollector(registry)
data=generate_latest(registry)
res=Response(content=data)
res.headers["Content-Type"] =CONTENT_TYPE_LATESTres.headers["Content-Length"] =str(len(data))
returnresApart from that my setup is pretty typical, I have some counters and a histogram:
AUTOMATIONS_TOTAL: Final=Gauge(
name=prefix_("automations_total"),
documentation="Number of automations run",
labelnames=["platform", "action", "kind", "status"],
multiprocess_mode="sum",
)
REQUEST_TIME_SECONDS: Final=Histogram(
name=prefix_("request_time_seconds"),
documentation="Time spent processing request",
labelnames=["method", "url_rule", "status_code"],
)
REQUESTS_IN_PROGRESS_TOTAL: Final=Gauge(
name=prefix_("requests_in_progress_total"),
documentation="Number of concurrent requests",
# See Metrics Tuning (Gauge)# https://github.com/prometheus/client_python#multiprocess-mode-gunicornmultiprocess_mode="sum",
)My in progress counter always remains at zero, but I'm hoping that's because requests finish faster than I can see them. The histogram, however, never shows up - I see no record of it in my PROMETHEUS_MULTIPROC_DIR and it's never rendered in the output. Any ideas for what I could troubleshoot?
Hey folks,
I have a similar setup to what is described here. The only difference is that I have nginx in front talking to gunicorn over sockets, but I don't think that matters as far as I can tell.
I wasn't able to use this code:
It results in a page that gets a 307, so I implemented this:
Apart from that my setup is pretty typical, I have some counters and a histogram:
My in progress counter always remains at zero, but I'm hoping that's because requests finish faster than I can see them. The histogram, however, never shows up - I see no record of it in my
PROMETHEUS_MULTIPROC_DIRand it's never rendered in the output. Any ideas for what I could troubleshoot?