Kepler.Registry (Kepler v0.1.0)

Copy Markdown View Source

Owns everything installed at boot: counters, ring buffers, the :telemetry attachments, and the :logger handler behind report sources.

It is deliberately inert. All of its work happens in init/1, and after that it holds references and answers one question. A process that does nothing is a process that does not crash, which matters because the ETS tables behind ring buffers die with their owner — putting them here rather than in the poller means a poller restart does not orphan a live telemetry handler writing to a dead table.

Kepler's supervisor uses :rest_for_one, so if this process ever does go down, the poller and system monitor are restarted behind it and everything is reinstalled together.

Summary

Types

Everything the poller needs to run a tick.

Functions

Returns a specification to start this module under a supervisor.

Everything installed, for the poller and the system monitor.

Types

specs()

@type specs() :: %{
  watches: [Kepler.Watch.t()],
  counters: %{required(atom()) => :counters.counters_ref()},
  rings: %{required(atom()) => Kepler.RingBuffer.t()},
  enrichers: %{required(atom()) => Kepler.RingBuffer.t()},
  conditions: %{required(atom()) => (Kepler.Context.t() -> boolean())}
}

Everything the poller needs to run a tick.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

specs()

@spec specs() :: specs()

Everything installed, for the poller and the system monitor.