macula_metrics (macula v3.15.2)
View SourceNode-wide Prometheus-style metric registry for macula-net.
Phase 4.1 — see PLAN_MACULA_NET_PHASE4_1_OBSERVABILITY.md.
Backed by ETS:
?META—{Name, Type, Labels, Help, Buckets}?VALS—{{counter, Name, LabelVals}, Count}{{gauge, Name, LabelVals}, Value}{{hist_bk, Name, LabelVals, I}, Count}(per bucket){{hist_sm, Name, LabelVals}, SumMicros}{{hist_ct, Name, LabelVals}, Count}
Counters and histograms use ets:update_counter/4 which is lock-free per-key; no gen_server roundtrip on the hot path.
Telemetry handlers are attached at start. Hot paths emit via telemetry:execute/3; the handler maps event_name + measurements to counter/histogram updates. Grep for telemetry:execute to find every measurement point.
Gauges are polled (1s) from source-of-truth (ETS sizes).
Summary
Functions
Returns the full metric snapshot in a render-friendly shape.
Wipe every counter / gauge / histogram value. Metadata stays.
Types
Functions
-spec gather() -> [map()].
Returns the full metric snapshot in a render-friendly shape.
-spec inc_counter(metric_name(), label_vals(), pos_integer()) -> ok.
-spec observe(metric_name(), label_vals(), number()) -> ok.
-spec register_counter(metric_name(), [label_name()], binary()) -> ok.
-spec register_gauge(metric_name(), [label_name()], binary()) -> ok.
-spec register_histogram(metric_name(), [label_name()], binary(), [number()]) -> ok.
-spec reset_all() -> ok.
Wipe every counter / gauge / histogram value. Metadata stays.
-spec set_gauge(metric_name(), label_vals(), number()) -> ok.
-spec stop() -> ok.