Phoenix.SessionProcess.Telemetry (phoenix_session_process v1.0.1)

Copy Markdown View Source

Telemetry events for Phoenix.SessionProcess.

This module provides telemetry events that can be used to monitor session lifecycle, performance, and errors.

Events

The following telemetry events are emitted:

Session Lifecycle

  • [:phoenix, :session_process, :start] - When a session starts
  • [:phoenix, :session_process, :stop] - When a session stops
  • [:phoenix, :session_process, :start_error] - When session start fails

Communication

  • [:phoenix, :session_process, :call] - When a call is made to a session
  • [:phoenix, :session_process, :cast] - When a cast is made to a session
  • [:phoenix, :session_process, :communication_error] - When communication fails

Process Management

  • [:phoenix, :session_process, :worker_start] - When a worker process starts
  • [:phoenix, :session_process, :worker_terminate] - When a worker process terminates
  • [:phoenix, :session_process, :session_start] - When a session process starts
  • [:phoenix, :session_process, :session_end] - When a session process ends

Cleanup

  • [:phoenix, :session_process, :auto_cleanup] - When a session is auto-cleaned up
  • [:phoenix, :session_process, :cleanup] - When a session is cleaned up
  • [:phoenix, :session_process, :cleanup_error] - When cleanup fails

Redux State Management

  • [:phoenix, :session_process, :redux, :dispatch] - When a Redux action is dispatched
  • [:phoenix, :session_process, :redux, :subscribe] - When a subscription is created
  • [:phoenix, :session_process, :redux, :unsubscribe] - When a subscription is removed
  • [:phoenix, :session_process, :redux, :notification] - When subscriptions are notified
  • [:phoenix, :session_process, :redux, :selector_cache_hit] - When selector cache is hit
  • [:phoenix, :session_process, :redux, :selector_cache_miss] - When selector cache misses All events include the following metadata:
  • session_id - The session ID (when applicable)
  • module - The session module
  • pid - The process PID (when applicable)
  • worker_spec - Worker specification details (for worker events)
  • operation - Operation type (for error events)
  • reason - Error reason (for error events)
  • measurements - Performance measurements

Summary

Functions

Emits a telemetry event for automatic session cleanup.

Emits a telemetry event for rate limit check.

Emits a telemetry event when rate limit is exceeded.

Emits a telemetry event for Redux action dispatch.

Emits a telemetry event for Redux subscription notification.

Emits a telemetry event for Redux selector cache hit.

Emits a telemetry event for Redux selector cache miss.

Emits a telemetry event for Redux subscription creation.

Emits a telemetry event for Redux subscription removal.

Emits a telemetry event for session cleanup.

Emits a telemetry event for session cleanup error.

Emits a telemetry event for session process end.

Emits a telemetry event for session start.

Emits a telemetry event for session start error.

Emits a telemetry event for session process start.

Emits a telemetry event for session stop.

Emits a telemetry event for worker process start.

Emits a telemetry event for worker process termination.

Measures the execution time of a function and emits telemetry events.

Functions

emit_auto_cleanup_event(session_id, module, pid, measurements \\ [])

@spec emit_auto_cleanup_event(String.t(), atom(), pid(), keyword()) :: :ok

Emits a telemetry event for automatic session cleanup.

emit_communication_error(session_id, module, operation, reason, measurements \\ [])

@spec emit_communication_error(String.t(), atom(), any(), any(), keyword()) :: :ok

Emits a telemetry event for communication error.

emit_rate_limit_check(current_count, rate_limit, measurements \\ [])

@spec emit_rate_limit_check(non_neg_integer(), non_neg_integer(), keyword()) :: :ok

Emits a telemetry event for rate limit check.

emit_rate_limit_exceeded(current_count, rate_limit, measurements \\ [])

@spec emit_rate_limit_exceeded(non_neg_integer(), non_neg_integer(), keyword()) :: :ok

Emits a telemetry event when rate limit is exceeded.

emit_redux_dispatch(session_id, action, measurements \\ [])

@spec emit_redux_dispatch(String.t() | nil, any(), keyword()) :: :ok

Emits a telemetry event for Redux action dispatch.

emit_redux_notification(session_id, subscription_count, measurements \\ [])

@spec emit_redux_notification(String.t() | nil, non_neg_integer(), keyword()) :: :ok

Emits a telemetry event for Redux subscription notification.

emit_redux_selector_cache_hit(cache_key, measurements \\ [])

@spec emit_redux_selector_cache_hit(reference(), keyword()) :: :ok

Emits a telemetry event for Redux selector cache hit.

emit_redux_selector_cache_miss(cache_key, measurements \\ [])

@spec emit_redux_selector_cache_miss(reference(), keyword()) :: :ok

Emits a telemetry event for Redux selector cache miss.

emit_redux_subscribe(session_id, subscription_id, measurements \\ [])

@spec emit_redux_subscribe(String.t() | nil, reference(), keyword()) :: :ok

Emits a telemetry event for Redux subscription creation.

emit_redux_unsubscribe(session_id, subscription_id, measurements \\ [])

@spec emit_redux_unsubscribe(String.t() | nil, reference(), keyword()) :: :ok

Emits a telemetry event for Redux subscription removal.

emit_session_call(session_id, module, pid, message, measurements \\ [])

@spec emit_session_call(String.t(), atom(), pid(), any(), keyword()) :: :ok

Emits a telemetry event for session call.

emit_session_cast(session_id, module, pid, message, measurements \\ [])

@spec emit_session_cast(String.t(), atom(), pid(), any(), keyword()) :: :ok

Emits a telemetry event for session cast.

emit_session_cleanup(session_id, module, pid, measurements \\ [])

@spec emit_session_cleanup(String.t(), atom(), pid(), keyword()) :: :ok

Emits a telemetry event for session cleanup.

emit_session_cleanup_error(session_id, module, reason, measurements \\ [])

@spec emit_session_cleanup_error(String.t(), atom(), any(), keyword()) :: :ok

Emits a telemetry event for session cleanup error.

emit_session_end_event(session_id, measurements \\ [])

@spec emit_session_end_event(String.t(), keyword()) :: :ok

Emits a telemetry event for session process end.

emit_session_start(session_id, module, pid, measurements \\ [])

@spec emit_session_start(String.t(), atom(), pid(), keyword()) :: :ok

Emits a telemetry event for session start.

emit_session_start_error(session_id, module, reason, measurements \\ [])

@spec emit_session_start_error(String.t(), atom(), any(), keyword()) :: :ok

Emits a telemetry event for session start error.

emit_session_start_event(session_id, measurements \\ [])

@spec emit_session_start_event(String.t(), keyword()) :: :ok

Emits a telemetry event for session process start.

emit_session_stop(session_id, module, pid, measurements \\ [])

@spec emit_session_stop(String.t(), atom(), pid(), keyword()) :: :ok

Emits a telemetry event for session stop.

emit_worker_start(worker_spec, measurements \\ [])

@spec emit_worker_start(term(), keyword()) :: :ok

Emits a telemetry event for worker process start.

emit_worker_terminate(pid, measurements \\ [])

@spec emit_worker_terminate(pid(), keyword()) :: :ok

Emits a telemetry event for worker process termination.

measure(session_id, operation, fun)

@spec measure(String.t(), atom(), fun()) :: {:ok, any()} | {:error, any()}

Measures the execution time of a function and emits telemetry events.