Accrue.Telemetry.Metrics (accrue v0.3.0)

Copy Markdown View Source

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.

Summary

Functions

Returns the default Accrue metric definitions.

Functions

defaults()

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

Returns the default Accrue metric definitions.

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