Skip to content

Commit ec499c5

Browse files
add hostname to the labels of the metrics; pull out calls to metrics file
Signed-off-by: Mike Kingsbury <[email protected]>
1 parent ce297ca commit ec499c5

File tree

2 files changed

+22
-9
lines changed

2 files changed

+22
-9
lines changed

cachito/web/api_v1.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from cachito.errors import MessageBrokerError, NoWorkers, RequestErrorOrigin, ValidationError
2626
from cachito.web import db
2727
from cachito.web.content_manifest import BASE_ICM
28-
from cachito.web.metrics import cachito_metrics
28+
from cachito.web.metrics import cachito_metrics, requests_dec, requests_inc
2929
from cachito.web.models import (
3030
ConfigFileBase64,
3131
EnvironmentVariable,
@@ -337,8 +337,8 @@ def create_request():
337337
db.session.add(request)
338338
db.session.commit()
339339

340-
cachito_metrics["gauge_state"].labels(state="total").inc()
341-
cachito_metrics["gauge_state"].labels(state=request.state.state_name).inc()
340+
requests_inc("total")
341+
requests_inc(request.state.state_name)
342342

343343
if current_user.is_authenticated:
344344
flask.current_app.logger.info(
@@ -438,9 +438,9 @@ def create_request():
438438
"Failed to schedule the task for request %d. Failing the request.", request.id
439439
)
440440
error = "Failed to schedule the task to the workers. Please try again."
441-
cachito_metrics["gauge_state"].labels(state=request.state.state_name).dec()
441+
requests_dec(request.state.state_name)
442442
request.add_state("failed", error)
443-
cachito_metrics["gauge_state"].labels(state=request.state.state_name).inc()
443+
requests_inc(request.state.state_name)
444444
db.session.commit()
445445
raise MessageBrokerError(error)
446446

@@ -525,8 +525,8 @@ def patch_request(request_id):
525525
delete_logs = False
526526

527527
if "state" in payload and "state_reason" in payload:
528-
cachito_metrics["gauge_state"].labels(state=payload["state"]).inc()
529-
cachito_metrics["gauge_state"].labels(state=request.state.state_name).dec()
528+
requests_inc(payload["state"])
529+
requests_dec(request.state.state_name)
530530
new_state = payload["state"]
531531
delete_bundle = new_state == "stale" and request.state.state_name != "failed"
532532
if new_state in ("stale", "failed"):

cachito/web/metrics.py

+15-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
from prometheus_flask_exporter.multiprocess import GunicornInternalPrometheusMetrics
77

88
cachito_metrics = {}
9+
hostname = socket.gethostname()
910

1011

1112
def init_metrics(app):
@@ -17,7 +18,6 @@ def init_metrics(app):
1718
"""
1819
registry = CollectorRegistry()
1920
multiproc_temp_dir = app.config["PROMETHEUS_METRICS_TEMP_DIR"]
20-
hostname = socket.gethostname()
2121

2222
if not os.path.isdir(multiproc_temp_dir):
2323
os.makedirs(multiproc_temp_dir)
@@ -27,10 +27,23 @@ def init_metrics(app):
2727
)
2828
metrics.init_app(app)
2929
gauge_state = Gauge(
30-
"cachito_requests_count", "Requests in each state", ["state"], multiprocess_mode="livesum"
30+
"cachito_requests_count",
31+
"Requests in each state",
32+
["state", "host"],
33+
multiprocess_mode="livesum",
3134
)
3235
request_duration = Summary(
3336
"cachito_request_duration_seconds", "Time spent in in_progress state"
3437
)
3538
cachito_metrics["gauge_state"] = gauge_state
3639
cachito_metrics["request_duration"] = request_duration
40+
41+
42+
def requests_inc(state):
43+
"""Increase the number of requests in given state."""
44+
cachito_metrics["gauge_state"].labels(state=state, host=hostname).inc()
45+
46+
47+
def requests_dec(state):
48+
"""Decrease the number of requests in the given state."""
49+
cachito_metrics["gauge_state"].labels(state=state, host=hostname).dec()

0 commit comments

Comments
 (0)