โ† All libraries

CandyMetrics

๐Ÿ“ˆ CandyMetrics

Telemetry primitives + CandyWish session middleware

port of promwish metrics telemetry statsd prometheus

Counters, gauges, histograms with pluggable backends โ€” drop-in middleware for SSH session metrics. Counter / Gauge / Histogram + four backends: InMemory, JsonStream, StatsD, Prometheus textfile, plus a Multi fan-out.

Install

composer require candycore/candy-metrics

Quickstart

use CandyCore\Metrics\Registry;
use CandyCore\Metrics\Backend\StatsdBackend;

$reg = new Registry(new StatsdBackend('127.0.0.1', 8125));

$reg->counter('http.requests', 1, ['route' => '/api/foo', 'status' => '200']);
$reg->gauge  ('queue.depth',  42);

$stop = $reg->time('http.duration', ['route' => '/api/foo']);
handleRequest();
$stop();

// Pre-tag every emit:
$req = $reg->withTags(['request_id' => $rid, 'user' => $userId]);
$req->counter('events');

What's in the box

CounterMonotonic value that accumulates (connect counts, errors).
GaugeInstantaneous value that replaces on set (queue depth, RSS).
HistogramDistribution of samples (latency, payload size).
Tagged metrics->withTags(['user' => $u]) returns a registry that pre-tags every emit.
Time helper$stop = $reg->time('http.duration'); $stop() โ€” emit a histogram sample on close.
BackendsInMemoryBackend, JsonStreamBackend, StatsdBackend, PrometheusFileBackend, MultiBackend.

Source & demos

Try the quickstart โ†’