# sdmetrics

> Connects Go and OpenTelemetry to systemd's metrics framework: publish metrics from a Go daemon the way systemd's own services do, and export every source on a host as OTLP.

- URL: https://rossedman.io/projects/sdmetrics/

systemd v260 added a metrics framework: a process becomes a metrics source by answering the `io.systemd.Metrics` Varlink interface on a socket under `/run/systemd/report/`. `sdmetrics` fills the two gaps around it.

- **A provider SDK** so a Go daemon can publish gauges, counters and labeled metrics in a few lines, readable by `systemd-report`. Updates are lock-free and allocation-free.
- **Bridges** that publish an existing Prometheus registry or OpenTelemetry reader without re-instrumenting.
- **`sdmetrics-exporter`**, a static binary with a hardened unit that scrapes every source on a host and pushes OTLP.
- **A Collector receiver**, `systemdreport`, for fleets that already run otelcol.

Built on [sdvarlink](https://rossedman.io/projects/sdvarlink/). It needs systemd v260 or newer.
