ExDaytona.Telemetry (ex_daytona v0.4.0)

Copy Markdown View Source

Domain-level :telemetry events emitted by the SDK facade.

Tesla already emits HTTP-level events for every request; these spans sit above that, at the level operations dashboards actually chart — sandbox lifecycle, command execution, file transfer. Each operation emits the standard :telemetry.span/3 triple:

  • [:ex_daytona, <area>, <op>, :start] — measurements %{monotonic_time, system_time}
  • [:ex_daytona, <area>, <op>, :stop] — measurements %{duration, monotonic_time} (duration in native units)
  • [:ex_daytona, <area>, <op>, :exception] — when the operation raised

Events

Event prefixStart metadataExtra stop metadata
[:ex_daytona, :sandbox, :create]sandbox_id
[:ex_daytona, :sandbox, :start]sandbox_id
[:ex_daytona, :sandbox, :stop]sandbox_id
[:ex_daytona, :sandbox, :delete]sandbox_id
[:ex_daytona, :sandbox, :exec]sandbox_idexit_code
[:ex_daytona, :sandbox, :run_code]sandbox_id, languageexit_code
[:ex_daytona, :session, :run]sandbox_id, session_idexit_code
[:ex_daytona, :fs, :upload]sandbox_idbytes
[:ex_daytona, :fs, :download]sandbox_idbytes
[:ex_daytona, :snapshot, :create]namesnapshot_id
[:ex_daytona, :snapshot, :build]namesnapshot_id
[:ex_daytona, :snapshot, :delete]snapshot_id

Every :stop event's metadata also carries the outcome:

  • outcome:ok or :error
  • error_code — the provider's error code string (or nil)
  • error_status — the HTTP status of the failure (or nil)

The :fs events cover the constant-memory transfer engine (upload_stream/upload_file, download_stream/download_file, stream!).

Metadata is deliberately redaction-safe: identifiers, languages, exit codes, and byte counts only — never command lines, file paths, environment values, or payloads.

:telemetry.attach(
  "ex-daytona-exec-timing",
  [:ex_daytona, :sandbox, :exec, :stop],
  fn _event, %{duration: duration}, meta, _config ->
    ms = System.convert_time_unit(duration, :native, :millisecond)
    Logger.info("exec on #{meta.sandbox_id}: #{meta.outcome} in #{ms}ms")
  end,
  nil
)