mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-03 12:54:53 -04:00
Add in flight real time metrics for Measure blocks
This commit is contained in:
parent
ad9198cc34
commit
0a81038ea0
2 changed files with 131 additions and 1 deletions
|
@ -20,6 +20,7 @@ from prometheus_client import Counter
|
|||
|
||||
from twisted.internet import defer
|
||||
|
||||
from synapse.metrics import InFlightGauge
|
||||
from synapse.util.logcontext import LoggingContext
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
@ -45,6 +46,13 @@ block_db_txn_duration = Counter(
|
|||
block_db_sched_duration = Counter(
|
||||
"synapse_util_metrics_block_db_sched_duration_seconds", "", ["block_name"])
|
||||
|
||||
# Tracks the number of blocks currently active
|
||||
in_flight = InFlightGauge(
|
||||
"synapse_util_metrics_block_in_flight", "",
|
||||
labels=["block_name"],
|
||||
sub_metrics=["real_time_max", "real_time_sum"],
|
||||
)
|
||||
|
||||
|
||||
def measure_func(name):
|
||||
def wrapper(func):
|
||||
|
@ -82,10 +90,14 @@ class Measure(object):
|
|||
|
||||
self.start_usage = self.start_context.get_resource_usage()
|
||||
|
||||
in_flight.register((self.name,), self._update_in_flight)
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
if isinstance(exc_type, Exception) or not self.start_context:
|
||||
return
|
||||
|
||||
in_flight.unregister((self.name,), self._update_in_flight)
|
||||
|
||||
duration = self.clock.time() - self.start
|
||||
|
||||
block_counter.labels(self.name).inc()
|
||||
|
@ -120,3 +132,13 @@ class Measure(object):
|
|||
|
||||
if self.created_context:
|
||||
self.start_context.__exit__(exc_type, exc_val, exc_tb)
|
||||
|
||||
def _update_in_flight(self, metrics):
|
||||
"""Gets called when processing in flight metrics
|
||||
"""
|
||||
duration = self.clock.time() - self.start
|
||||
|
||||
metrics.real_time_max = max(metrics.real_time_max, duration)
|
||||
metrics.real_time_sum += duration
|
||||
|
||||
# TODO: Add other in flight metrics.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue