def report(self, batch: metrics.Batch) -> None: # gevent events come in on another thread. we're relying on the GIL to # keep us from shenanigans here and we swap things out semi-safely to # ensure minimal lost data. times_blocked = self.times_blocked self.times_blocked = [] for time_blocked in times_blocked: batch.timer("hub_blocked").send(time_blocked)
def report(self, batch: metrics.Batch) -> None: threshold = time.time() - MAX_REQUEST_AGE stale_requests = [ trace_id for trace_id, start_time in self.live_requests.items() if start_time < threshold ] for stale_request_id in stale_requests: self.live_requests.pop(stale_request_id, None) batch.gauge("active_requests").replace(len(self.live_requests))
def report(self, batch: metrics.Batch) -> None: for name, reporter in self.reporters.items(): original_namespace = batch.namespace try: batch.namespace = b".".join( (batch.namespace, b"clients", name.encode())) reporter(batch) except Exception as exc: logger.exception("Error generating client metrics: %s: %s", name, exc) finally: batch.namespace = original_namespace
def __init__(self, batch: metrics.Batch, span: Span, sample_rate: float = 1.0): self.batch = batch self.timer = batch.timer(f"{span.component_name}.{span.name}") self.sample_rate = sample_rate
def __init__(self, batch: metrics.Batch, span: Span, sample_rate: float = 1.0): self.batch = batch self.base_name = f"clients.{span.name}" self.timer = batch.timer(self.base_name) self.sample_rate = sample_rate
def __init__(self, batch: metrics.Batch, server_span: Span, sample_rate: float = 1.0): self.batch = batch self.base_name = "server." + server_span.name self.timer = batch.timer(self.base_name) self.sample_rate = sample_rate
def __init__(self, batch: metrics.Batch, span: Span, sample_rate: float = 1.0): self.batch = batch self.timer = batch.timer( typing.cast(str, span.component_name) + "." + span.name) self.sample_rate = sample_rate
def report(self, batch: metrics.Batch) -> None: for name, reporter in self.reporters.items(): try: batch.base_tags["client"] = name reporter(batch) except Exception as exc: logger.exception("Error generating client metrics: %s: %s", name, exc) finally: del batch.base_tags["client"]
def __init__( self, batch: metrics.Batch, span: Span, whitelist: Set[str], sample_rate: float = 1.0 ): self.batch = batch self.span = span self.tags: Dict[str, Any] = {} self.timer = batch.timer("baseplate.local") self.whitelist = whitelist self.counters: Dict[str, float] = {} self.sample_rate = sample_rate
def __init__( self, batch: metrics.Batch, server_span: Span, allowlist: Set[str], sample_rate: float = 1.0 ): self.batch = batch self.span = server_span self.base_name = "baseplate.server" self.allowlist = allowlist self.tags: Dict[str, Any] = {} self.timer = batch.timer(f"{self.base_name}.latency") self.counters: Dict[str, float] = {} self.sample_rate = sample_rate
def report(self, batch: metrics.Batch) -> None: batch.gauge("active_requests").replace(len(self.pool.greenlets))
def __init__(self, batch: metrics.Batch, span: Span): self.batch = batch self.timer = batch.timer( typing.cast(str, span.component_name) + "." + span.name)
def __init__(self, batch: metrics.Batch, span: Span): self.batch = batch self.base_name = f"clients.{span.name}" self.timer = batch.timer(self.base_name)
def __init__(self, batch: metrics.Batch, server_span: Span): self.batch = batch self.base_name = "server." + server_span.name self.timer = batch.timer(self.base_name)
def report(self, batch: metrics.Batch) -> None: for generation, stats in enumerate(gc.get_stats()): for name, value in stats.items(): gauge = batch.gauge(f"gc.{name}", tags={"generation": generation}) gauge.replace(value)
def report(self, batch: metrics.Batch) -> None: gc_durations = self.gc_durations self.gc_durations = [] for gc_duration in gc_durations: batch.timer("gc.elapsed").send(gc_duration)
def report(self, batch: metrics.Batch) -> None: for generation, stats in enumerate(gc.get_stats()): for name, value in stats.items(): batch.gauge(f"gc.gen{generation}.{name}").replace(value)
def report(self, batch: metrics.Batch) -> None: batch.gauge("open_connections").replace(len(self.pool.greenlets))