Packages
horde
0.8.6
0.10.0
0.9.1
0.9.0
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.8.0-rc.1
0.7.1
0.7.0
0.6.1
0.6.0
0.6.0-rc.1
0.5.0
0.5.0-rc.12
0.5.0-rc.11
0.5.0-rc.10
0.5.0-rc.9
0.5.0-rc.8
0.5.0-rc.7
0.5.0-rc.6
0.5.0-rc.5
0.5.0-rc.4
0.5.0-rc.3
0.5.0-rc.2
0.5.0-rc.1
0.4.0-rc.2
0.4.0-rc.1
0.3.0
0.3.0-rc1
0.2.3
0.2.2
0.2.1
0.2.0
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Distributed supervisor & process registry built with DELTA-CRDTs
Current section
Files
Jump to
Current section
Files
lib/horde/supervisor_telemetry_poller.ex
defmodule Horde.DynamicSupervisorTelemetryPoller do
@moduledoc false
require Logger
def child_spec(supervisor_impl_name) do
%{
id: :"#{supervisor_impl_name}_telemetry_poller",
start: {
:telemetry_poller,
:start_link,
[
[
measurements: [
{:process_info,
name: supervisor_impl_name,
event: [:horde, :supervisor],
keys: [:message_queue_len]},
{__MODULE__, :poll, [supervisor_impl_name]}
],
period: 5_000,
name: :"#{supervisor_impl_name}_telemetry_poller"
]
]
}
}
end
def poll(supervisor_impl_name) do
metrics = GenServer.call(supervisor_impl_name, :get_telemetry)
:telemetry.execute([:horde, :supervisor, :supervised_process_count], metrics, %{
name: supervisor_impl_name
})
catch
:exit, reason ->
Logger.warn("""
Exit while fetching metrics from #{inspect(supervisor_impl_name)}.
Skip poll action. Reason: #{inspect(reason)}.
""")
:ok
end
end