Zero-dependency, high-concurrency in-memory metrics for fx effect pipelines.
Zero-dependency, high-concurrency in-memory metrics for fx effect pipelines.
(counter-inc! desc)(counter-inc! registry desc)(counter-inc! registry desc n)Increments counter descriptor in registry by n (default 1).
Increments counter descriptor in registry by `n` (default 1).
(counter-inc> counter-desc)(counter-inc> counter-desc-or-prev n-or-desc)(counter-inc> prev-effect counter-desc n)Creates an effect that increments counter-descriptor by n (default 1).
Example: (-> (fx/succeed> :ok) (fx.observability.metrics/counter-inc> (fx.observability.metrics/metric-counter "events.total")))
Creates an effect that increments `counter-descriptor` by `n` (default 1).
Example:
(-> (fx/succeed> :ok)
(fx.observability.metrics/counter-inc> (fx.observability.metrics/metric-counter "events.total")))(format-metrics-snapshot {:keys [counters gauges timers]})Pure function transforming raw registry state map into a formatted snapshot map.
Pure function transforming raw registry state map into a formatted snapshot map.
(gauge-set! desc val)(gauge-set! registry desc val)Sets gauge descriptor value in registry.
Sets gauge descriptor value in registry.
(gauge-set> gauge-desc val)(gauge-set> prev-effect gauge-desc val)Creates an effect that sets gauge-descriptor to val-or-fn.
Example: (fx.observability.metrics/gauge-set> (fx.observability.metrics/metric-gauge "queue.size") 42)
Creates an effect that sets `gauge-descriptor` to `val-or-fn`. Example: (fx.observability.metrics/gauge-set> (fx.observability.metrics/metric-gauge "queue.size") 42)
(make-metrics-registry)Creates a new isolated, concurrent metrics registry.
Creates a new isolated, concurrent metrics registry.
(metric-counter name)(metric-counter name tags)Creates a counter metric descriptor.
Creates a counter metric descriptor.
(metric-descriptor? x)Returns true if x is a MetricDescriptor.
Returns true if `x` is a MetricDescriptor.
(metric-gauge name)(metric-gauge name tags)Creates a gauge metric descriptor.
Creates a gauge metric descriptor.
(metric-timer name)(metric-timer name tags)Creates a latency timer metric descriptor.
Creates a latency timer metric descriptor.
(metrics-layer>)(metrics-layer> registry)Creates a managed Layer providing :fx.observability/metrics-registry.
When called with no arguments, acquires a fresh isolated concurrent metrics registry.
When called with registry, provides that registry.
On release, resets the registry via reset-metrics!.
Creates a managed Layer providing `:fx.observability/metrics-registry`. When called with no arguments, acquires a fresh isolated concurrent metrics registry. When called with `registry`, provides that registry. On release, resets the registry via `reset-metrics!`.
(metrics-snapshot!)(metrics-snapshot! registry)Returns a pure Clojure map snapshot of all metrics registered in registry.
Returns a pure Clojure map snapshot of all metrics registered in `registry`.
(reset-metrics!)(reset-metrics! registry)Resets all metric accumulators in registry to zero.
Resets all metric accumulators in `registry` to zero.
(timer-record! desc duration-ms)(timer-record! registry desc duration-ms)Records a latency observation in milliseconds into timer descriptor in registry.
Records a latency observation in milliseconds into timer descriptor in registry.
(track-duration> timer-desc eff)(track-duration> prev-effect timer-desc eff)Wraps effect measuring elapsed execution time and recording it into timer-descriptor.
Example: (fx.observability.metrics/track-duration> (fx.observability.metrics/metric-timer "db.query.time" {:table "users"}) (query-db> sql))
Wraps `effect` measuring elapsed execution time and recording it into `timer-descriptor`.
Example:
(fx.observability.metrics/track-duration> (fx.observability.metrics/metric-timer "db.query.time" {:table "users"})
(query-db> sql))(track-failure-count> counter-desc eff)(track-failure-count> prev-effect counter-desc eff)Wraps effect, incrementing counter-descriptor upon failure or defect.
Leaves counter unmodified if the effect succeeds.
Example: (fx.observability.metrics/track-failure-count> (fx.observability.metrics/metric-counter "orders.failure") (place-order> order))
Wraps `effect`, incrementing `counter-descriptor` upon failure or defect.
Leaves counter unmodified if the effect succeeds.
Example:
(fx.observability.metrics/track-failure-count> (fx.observability.metrics/metric-counter "orders.failure")
(place-order> order))(track-success-count> counter-desc eff)(track-success-count> prev-effect counter-desc eff)Wraps effect, incrementing counter-descriptor upon successful execution.
Leaves counter unmodified if the effect fails.
Example: (fx.observability.metrics/track-success-count> (fx.observability.metrics/metric-counter "orders.success") (place-order> order))
Wraps `effect`, incrementing `counter-descriptor` upon successful execution.
Leaves counter unmodified if the effect fails.
Example:
(fx.observability.metrics/track-success-count> (fx.observability.metrics/metric-counter "orders.success")
(place-order> order))(update-timer-stats stats duration-ms)Pure function that incorporates a new duration observation (in milliseconds) into existing timer stats map.
Pure function that incorporates a new duration observation (in milliseconds) into existing timer stats map.
(with-metrics-registry> registry-or-eff eff-or-registry)(with-metrics-registry> prev-effect registry target-eff)Scopes a metrics registry to effect.
Example: (fx.observability.metrics/with-metrics-registry> reg (app-pipeline>))
Scopes a metrics registry to `effect`. Example: (fx.observability.metrics/with-metrics-registry> reg (app-pipeline>))
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |