Marqeta.Telemetry (marqeta v1.0.0)

Copy Markdown View Source

Telemetry integration for the Marqeta client.

All HTTP requests emit telemetry events consumable by Phoenix LiveDashboard, PromEx, Datadog, or any :telemetry handler.

Events

All events use the configured :telemetry_prefix (default [:marqeta]).

[:marqeta, :request, :start]

  • Measurements: %{system_time: integer}
  • Metadata: %{attempt: integer, method: atom, path: string}

[:marqeta, :request, :stop]

  • Measurements: %{duration: integer} (native time units)
  • Metadata: %{attempt: integer, http_status: integer | nil, method: atom, path: string, status: :ok | :error}

[:marqeta, :request, :exception]

  • Measurements: %{duration: integer}
  • Metadata: %{kind: atom, method: atom, path: string, reason: term, stacktrace: list}

[:marqeta, :request, :retry]

  • Measurements: %{system_time: integer}
  • Metadata: %{attempt: integer, method: atom, path: string}

Attaching a handler

:telemetry.attach(
  "my-marqeta-logger",
  [:marqeta, :request, :stop],
  &Marqeta.Telemetry.log_handler/4,
  nil
)

Metrics

# For Phoenix LiveDashboard or PromEx:
Marqeta.Telemetry.metrics()

Summary

Functions

A ready-made telemetry handler that logs request outcomes via Logger.

Returns Telemetry.Metrics structs for use with Phoenix LiveDashboard or PromEx.

Functions

log_handler(arg1, measurements, metadata, config)

@spec log_handler([atom()], map(), map(), term()) :: :ok

A ready-made telemetry handler that logs request outcomes via Logger.

Attach with:

:telemetry.attach(
  "marqeta-logger",
  [:marqeta, :request, :stop],
  &Marqeta.Telemetry.log_handler/4,
  nil
)

metrics()

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

Returns Telemetry.Metrics structs for use with Phoenix LiveDashboard or PromEx.

Usage

# In your Phoenix endpoint telemetry module:
def metrics do
  Marqeta.Telemetry.metrics() ++ your_own_metrics()
end