Sumup instruments every HTTP call with
:telemetry spans (default prefix
[:sumup, :request], configurable via Sumup.Config.t/0's
:telemetry_prefix).
Events
[:sumup, :request, :start]— emitted before a request is sent. Measurements:%{system_time: integer()}. Metadata:%{method: atom(), path: String.t(), resource: atom(), operation: atom(), attempt: pos_integer()}.[:sumup, :request, :stop]— emitted after a request completes (successfully or not). Measurements:%{duration: integer()}(native time units). Metadata: everything from:startplus%{status: pos_integer() | nil, result: :ok | :error, retryable: boolean() | nil}.[:sumup, :request, :exception]— emitted if the request raises. Measurements:%{duration: integer()}. Metadata: everything from:startplus%{kind: :error | :exit | :throw, reason: term(), stacktrace: list()}.[:sumup, :request, :retry]— emitted once per retry attempt, before the backoff sleep. Measurements:%{delay: pos_integer()}. Metadata:%{attempt: pos_integer(), status: pos_integer() | nil, resource: atom(), operation: atom()}.
Example: attach a logger handler
:telemetry.attach_many(
"sumup-logger",
[
[:sumup, :request, :start],
[:sumup, :request, :stop],
[:sumup, :request, :exception]
],
&MyApp.SumupLogger.handle_event/4,
nil
)If you configure a custom :telemetry_prefix in Sumup.Config, replace
:sumup above with your prefix's first element accordingly (the second
and third elements, :request and the event name, stay the same).