# `Accrue.Telemetry.Metrics`
[🔗](https://github.com/szTheory/accrue/blob/accrue-v0.3.1/lib/accrue/telemetry/metrics.ex#L2)

Default `Telemetry.Metrics` recipe for SRE teams.

This module is conditionally compiled — it is only available when the
optional `:telemetry_metrics` dependency is present.

Host apps wire this into their own metrics supervisor:

    defmodule MyApp.Telemetry do
      use Supervisor
      import Telemetry.Metrics

      def init(_arg) do
        children = [
          {TelemetryMetricsPrometheus, [metrics: metrics()]}
        ]
        Supervisor.init(children, strategy: :one_for_one)
      end

      defp metrics do
        [
          counter("my_app.request.count")
          # ... host metrics ...
        ] ++ Accrue.Telemetry.Metrics.defaults()
      end
    end

Distributions and percentile summaries beyond the defaults below are
host-choice — Accrue does not prescribe binning strategies.

## Cardinality discipline

Tags on the default counters are restricted to low-cardinality fields
(`:status`, `:source`, `:type`, `:stripe_status`). Customer ID,
subscription ID, and other unbounded identifiers are NEVER promoted to
metric tags — those belong on spans, not metrics.

# `defaults`

```elixir
@spec defaults() :: [struct()]
```

Returns the default Accrue metric definitions.

Append to your host metric list. See module doc for full host wiring
example.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
