How to measure time spent by collector.collect?
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 35/100
- Issue-Typ
- Dokumentation
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- prometheus, python
- Bereich
- observability
Rechercherichtung
Beginne mit dem gezeigten Collector.collect-Generator und dem Gauge.time()-Decorator. Vergleiche anschließend die Zeitmessung des Decorators mit dem Code innerhalb von collect(). Erkläre, warum sich die beiden Messungen unterscheiden, und dokumentiere das Verhalten, damit Benutzer die Sammlungszeit von Collectors korrekt messen können.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Having a 3rd-party application which can not expose any metrics by itself I wrote my own exporter which takes data from the app and exposes metrics. The next idea was to measure and expose to prometheus an exact time it takes for all of the collectors to get actual data from the app. But two different approaches - with collector.collect() decorator and measurements taken directly inside of collector.collect() yields different results, and I don't understand what the decorator is actually measures.
Could you please explain this difference or maybe I'm missing something?
import time
from typing import Iterable
from prometheus_client import make_wsgi_app, Gauge
from prometheus_client.core import REGISTRY, GaugeMetricFamily, Metric
from prometheus_client.registry import Collector
from wsgiref.simple_server import make_server
COLLECTOR_TIME = Gauge('collector_spent_secods', 'Time spent by collector to get data', ['collector'])
class MetricsCollector(Collector):
@COLLECTOR_TIME.labels('decorator').time()
def collect(self) -> Iterable[Metric]:
st = time.perf_counter()
gauge = GaugeMetricFamily(
name='some_metric_seconds',
documentation='Some seconds metric',
labels=['somename']
)
time.sleep(1)
gauge.add_metric(['foo'], 3.0)
COLLECTOR_TIME.labels('inside').set(time.perf_counter() - st)
yield gauge
if __name__ == "__main__":
REGISTRY.register(MetricsCollector())
app = make_wsgi_app(REGISTRY)
host = '0.0.0.0'
port = 6543
httpd = make_server(host, port, app)
httpd.serve_forever()
$ curl localhost:6543 2>/dev/null | egrep -v '^#' | grep 'collector_spent_secods'
collector_spent_secods{collector="decorator"} 7.499998901039362e-06
collector_spent_secods{collector="inside"} 1.0012022000155412
- Vorherrschende Sprache
- Python
- Sterne
- 4.4k
- Forks
- 876
- Ø Merge
- 8 T. 4 Std.
- Gemergte PRs (30 T.)
- 1
Beitragsleitfaden
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus prometheus/client_python
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
prometheus/client_python#1177 · 1 Kommentar ·
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 45/100
prometheus/client_python#1210 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 58/100
prometheus/client_python#1199 · 1 Reaktion ·
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 35/100
prometheus/client_python#1176 ·
-
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 52/100
prometheus/client_python#1126 · 2 Kommentare ·
Alle Issues in prometheus/client_python
Ähnliche Issues
-
agent-ready documentation needs-triage
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 88/100
-
documentation
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 91/100
-
workflow-status page template still says reusable workflows are "triggered only by workflow_call:" Offen
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 92/100
-
instance instance add
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 72/100
searxng/searx-instances#939 · 1 Kommentar ·
-
area-deployment area-integrations triage:bot-seen
Schwierigkeit 2/5 Ein halber Tag Anfängerfreundlichkeit 86/100