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
Functions
Returns a specification to start this module under a supervisor.
Everything installed, for the poller and the system monitor.
Types
@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
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec specs() :: specs()
Everything installed, for the poller and the system monitor.