Multiproc doesn't capture all metrics
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Ambito
- observability
Direzione di ricerca
Inizia riproducendo il percorso del collector multiprocesso di FastAPI e il gestore /metrics personalizzato mostrato nell'issue. Esamina CollectorRegistry, MultiProcessCollector e l'output di PROMETHEUS_MULTIPROC_DIR confrontando il comportamento di counter, gauge e histogram. Il lavoro è completato quando avrai identificato perché l'histogram è assente e confermato che le metriche previste vengono renderizzate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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 registry
def make_metrics_app():
registry = CollectorRegistry()
multiprocess.MultiProcessCollector(registry)
return make_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)
async def get_metrics() -> str:
"""
Get prometheus metrics
"""
registry = CollectorRegistry()
multiprocess.MultiProcessCollector(registry)
data = generate_latest(registry)
res = Response(content=data)
res.headers["Content-Type"] = CONTENT_TYPE_LATEST
res.headers["Content-Length"] = str(len(data))
return res
Apart 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-gunicorn
multiprocess_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?
- Lingua principale
- Python
- Stelle
- 4.4k
- Fork
- 876
- Merge medio
- 8g 4h
- PR unite (30g)
- 1
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di prometheus/client_python
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
prometheus/client_python#1177 · 1 commento ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
prometheus/client_python#1210 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 58/100
prometheus/client_python#1199 · 1 reazione ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
prometheus/client_python#1176 ·
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 52/100
prometheus/client_python#1126 · 2 commenti ·
Tutte le issue di prometheus/client_python
Issue simili
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
canonical/paas-charm#368 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
tech debt
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
addition to tracking list Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
StevenBlack/hosts#3256 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
qualcomm/qai-appbuilder#275 ·