Unit.Telemetry (Unit v1.0.0)

Copy Markdown View Source

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

Emits a retry telemetry event.

Wraps fun in telemetry start/stop/exception events.

Functions

retry_event(resource, action, attempt, reason)

@spec retry_event(atom(), atom(), non_neg_integer(), term()) :: :ok

Emits a retry telemetry event.

span(resource, action, meta \\ [], fun)

@spec span(atom(), atom(), keyword(), (-> result)) :: result when result: term()

Wraps fun in telemetry start/stop/exception events.