Telemetry.Metrics definitions for RpcLoadBalancer.call/5,
RpcLoadBalancer.cast/5, and node-selection events.
Consumers register these in their telemetry supervisor — e.g. through
PrometheusTelemetry — to expose rpc_load_balancer.* series.
# in your_app/application.ex
children = [
{PrometheusTelemetry,
exporter: [enabled?: prod?()],
metrics: [
RpcLoadBalancer.Metrics.metrics(),
PrometheusTelemetry.Metrics.VM.metrics()
]}
]Emitted events
[:rpc_load_balancer, :rpc, :start][:rpc_load_balancer, :rpc, :stop]— measurement:duration(:native)[:rpc_load_balancer, :rpc, :exception][:rpc_load_balancer, :node_selected]—count: 1, members_count: pool_size[:rpc_load_balancer, :node_selected, :empty]—count: 1
Metadata
RPC events:
:type—:callor:cast:node— target node atom:module—inspect/1'd module name (string, low-cardinality):function— function name atom:load_balancer— load balancer name atom, ornilfor direct calls:status(stop only) —:ok | :error | atom()mapped fromErrorMessagecode
Selection events:
:algorithm— full algorithm module atom (e.g.Random,RoundRobin):load_balancer— load balancer name atom:node— selected node atom (omitted on:emptyevent)
Prometheus series
rpc_load_balancer.rpc.request.start.countrpc_load_balancer.rpc.request.stop.countrpc_load_balancer.rpc.duration.millisecondsrpc_load_balancer.node.selected.countrpc_load_balancer.node.selected.empty.countrpc_load_balancer.node.pool_size
Summary
Functions
@spec metrics() :: [Telemetry.Metrics.t()]