WhatsApp.Telemetry (WhatsApp SDK v0.1.0)

Copy Markdown View Source

Telemetry event helpers for WhatsApp API requests.

Events

EventMeasurementsMetadata
[:whatsapp, :request, :start]%{system_time: integer}%{method: atom, path: String.t}
[:whatsapp, :request, :stop]%{duration: integer}%{method: atom, path: String.t, status: integer}
[:whatsapp, :request, :exception]%{duration: integer}%{method: atom, path: String.t, kind: atom, reason: term}
[:whatsapp, :request, :retry]%{system_time: integer}%{method: atom, path: String.t, attempt: integer, reason: term, wait_ms: integer}

Attaching Handlers

:telemetry.attach_many(
  "whatsapp-logger",
  [
    [:whatsapp, :request, :start],
    [:whatsapp, :request, :stop],
    [:whatsapp, :request, :exception]
  ],
  &MyApp.TelemetryHandler.handle_event/4,
  nil
)

Summary

Functions

Emit an :exception telemetry event.

Emit a :retry telemetry event.

Emit a :start telemetry event.

Emit a :stop telemetry event.

Returns the [:whatsapp, :request, :exception] event name.

Returns the [:whatsapp, :request, :retry] event name.

Returns the [:whatsapp, :request, :start] event name.

Returns the [:whatsapp, :request, :stop] event name.

Functions

emit_exception(start_time, method, path, kind, reason)

@spec emit_exception(integer(), atom(), String.t(), atom(), term()) :: :ok

Emit an :exception telemetry event.

start_time is the monotonic time returned by emit_start/2.

emit_retry(method, path, attempt, metadata)

@spec emit_retry(atom(), String.t(), pos_integer(), map()) :: :ok

Emit a :retry telemetry event.

Called before each retry attempt to allow observability into retry behaviour.

  • method - HTTP method atom
  • path - request path string
  • attempt - the upcoming attempt number (1-indexed, so first retry is attempt 2)
  • metadata - map with :reason (atom) and :wait_ms (integer)

emit_start(method, path)

@spec emit_start(atom(), String.t()) :: integer()

Emit a :start telemetry event.

Returns the start time (monotonic) for computing duration in stop/exception.

emit_stop(start_time, method, path, status)

@spec emit_stop(integer(), atom(), String.t(), integer()) :: :ok

Emit a :stop telemetry event.

start_time is the monotonic time returned by emit_start/2.

event_exception()

@spec event_exception() :: [atom()]

Returns the [:whatsapp, :request, :exception] event name.

event_retry()

@spec event_retry() :: [atom()]

Returns the [:whatsapp, :request, :retry] event name.

event_start()

@spec event_start() :: [atom()]

Returns the [:whatsapp, :request, :start] event name.

event_stop()

@spec event_stop() :: [atom()]

Returns the [:whatsapp, :request, :stop] event name.