RpcLoadBalancer.Metrics (rpc_load_balancer v0.3.0)

Copy Markdown View Source

Telemetry.Metrics definitions for RpcLoadBalancer.call/5 and RpcLoadBalancer.cast/5 spans.

Consumers register these in their telemetry supervisor — e.g. through PrometheusTelemetry — to expose rpc_load_balancer.rpc.* 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]

Metadata

  • :type:call or :cast
  • :node — target node atom
  • :moduleinspect/1'd module name (string, low-cardinality)
  • :function — function name atom
  • :load_balancer — load balancer name atom, or nil for direct calls
  • :status (stop only) — :ok | :error | atom() mapped from ErrorMessage code

Prometheus series

  • rpc_load_balancer.rpc.request.start.count
  • rpc_load_balancer.rpc.request.stop.count
  • rpc_load_balancer.rpc.duration.milliseconds

Summary

Functions

metrics()

@spec metrics() :: [Telemetry.Metrics.t()]