# `PromEx.Storage`
[🔗](https://github.com/akoutmos/prom_ex/blob/master/lib/prom_ex/storage.ex#L1)

Storage definition behaviour.

# `child_spec`

```elixir
@callback child_spec(atom(), [Telemetry.Metrics.t()]) :: Supervisor.child_spec()
```

Define child specs for gatherer process.

# `scrape`

```elixir
@callback scrape(name :: atom()) :: iodata() | :prom_ex_down
```

Gather metrics for given collector with given `name`.

# `child_spec`

```elixir
@spec child_spec(
  mod :: module(),
  name :: module(),
  metrics :: [Telemetry.Metrics.t()]
) ::
  Supervisor.child_spec()
```

Generate the process child spec for the store.

# `scrape`

```elixir
@spec scrape(mod :: module(), name :: module()) :: iodata() | :prom_ex_down
```

Extract the metrics out of the configured store.

---

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