Rate, errors, and latency percentiles on a hosted dashboard — no Prometheus, no Grafana, no YAML. One middleware call, and your service reports.
Free tier · no card · absent key = no-op, safe to ship
mAPI-ng targets the onboarding and operational cost of the OTel + Prometheus + Grafana stack — not its flexibility. It gives you the three signals that matter for every HTTP endpoint, and nothing to operate.
One required input: MAPING_KEY. Service name is inferred from the binary, instance from the hostname, flush timing and sketch params from defaults. An absent key makes the middleware a no-op — adding mAPI-ng is always safe, and activation is decoupled from the code change.
The client aggregates per-endpoint metrics in-process into a DDSketch before sending. The server stores compact Summaries in ClickHouse and rolls them up through 1-minute, 1-hour and 1-day tiers. More data ingested per second, less disk used, faster queries than raw-event pipelines.
go get github.com/arhuman/maping/client go get github.com/arhuman/maping/client/gin
Core client has no web-framework deps. The Gin adapter is a separate module, so it never leaks into your binary unless you use it.
rec := maping.NewRecorder(
maping.WithService("my-api"))
r.Use(mgin.MiddlewareWithRecorder(rec))
Mount it above gin.Recovery(). Service and instance are inferred — no further wiring.
export MAPING_KEY=mk_live_…
The only required input. It carries both the secret and the collector endpoint. Absent = no-op.