Telemetry integration for the Unit client.
Events
[:unit, :request, :start]
Emitted before each HTTP request.
Measurements: %{system_time: integer()}
Metadata: %{method: atom(), url: String.t(), resource: atom(), action: atom()}
[:unit, :request, :stop]
Emitted after a successful HTTP response.
Measurements: %{duration: integer()}
Metadata: %{resource: atom(), action: atom(), status: integer() | nil}
[:unit, :request, :exception]
Emitted when an exception or error occurs.
Measurements: %{duration: integer()}
Metadata: %{resource: atom(), action: atom(), reason: term()}
[:unit, :retry]
Emitted each time a request is retried.
Measurements: %{attempt: integer()}
Metadata: %{resource: atom(), action: atom(), reason: term()}
Example
:telemetry.attach(
"unit-logger",
[:unit, :request, :stop],
fn _event, %{duration: d}, %{resource: r, action: a, status: s}, _cfg ->
Logger.info("Unit #{r}.#{a} completed in #{div(d, 1_000_000)}ms (HTTP #{s})")
end,
nil
)
Summary
Functions
@spec retry_event(atom(), atom(), non_neg_integer(), term()) :: :ok
Emits a retry telemetry event.
Wraps fun in telemetry start/stop/exception events.