RedisCluster.Telemetry (redis_cluster v0.8.0)
View SourceTelemetry integration for Redis cluster operations.
This module provides functions to emit telemetry events for various Redis cluster operations including:
- Redis command execution (get, set, delete, etc.)
- Pipeline operations
- Cluster discovery and resharding
- Connection management
- Error tracking
Events
The following telemetry events are emitted:
Command Events
[:redis_cluster, :command, :start]- Before executing a Redis command[:redis_cluster, :command, :stop]- After successful command execution[:redis_cluster, :command, :exception]- When a command raises an exception
Pipeline Events
[:redis_cluster, :pipeline, :start]- Before executing a pipeline[:redis_cluster, :pipeline, :stop]- After successful pipeline execution[:redis_cluster, :pipeline, :exception]- When a pipeline raises an exception
Cluster Events
[:redis_cluster, :cluster, :discovery, :start]- Before cluster discovery[:redis_cluster, :cluster, :discovery, :stop]- After cluster discovery[:redis_cluster, :cluster, :rediscovery]- When cluster is rediscovered due to MOVED errors
Connection Events
[:redis_cluster, :connection, :acquired]- When a connection is acquired from pool
Redirect Events
[:redis_cluster, :redirect, :moved]- When a MOVED redirect occurs[:redis_cluster, :redirect, :ask]- When a ASK redirect occurs
Example Usage
# Basic telemetry handler
:telemetry.attach(
"redis-cluster-handler",
[:redis_cluster, :command, :stop],
&MyApp.TelemetryHandler.handle_command/4,
nil
)
# Using [`telemetry_metrics`](https://hex.pm/packages/telemetry_metrics)
Telemetry.Metrics.counter("redis_cluster.command.stop.count", tags: [:command_name])
Telemetry.Metrics.distribution("redis_cluster.command.stop.duration",
unit: {:native, :millisecond}
)
Summary
Functions
Emits a telemetry event when a ASK redirect occurs.
Emits a telemetry event when the cluster needs to be rediscovered due to MOVED errors.
Emits telemetry events for cluster statistics.
Emits a telemetry event when a connection is acquired from the pool.
Emits a simple telemetry event without timing.
Emits a telemetry event for Redis command execution.
Emits a telemetry event for cluster discovery operations.
Emits a telemetry event for Redis pipeline execution.
Emits a telemetry event when a MOVED redirect occurs.
Executes a telemetry event for a Redis command with timing.
Functions
@spec ask_redirect(metadata :: map()) :: :ok
Emits a telemetry event when a ASK redirect occurs.
@spec cluster_rediscovery(metadata :: map()) :: :ok
Emits a telemetry event when the cluster needs to be rediscovered due to MOVED errors.
Emits telemetry events for cluster statistics.
@spec connection_acquired(metadata :: map()) :: :ok
Emits a telemetry event when a connection is acquired from the pool.
Emits a simple telemetry event without timing.
@spec execute_command( command :: [String.t()], metadata :: map(), fun :: (-> result) ) :: result when result: any()
Emits a telemetry event for Redis command execution.
Emits a telemetry event for cluster discovery operations.
@spec execute_pipeline( commands :: [[String.t()]], metadata :: map(), fun :: (-> result) ) :: result when result: any()
Emits a telemetry event for Redis pipeline execution.
@spec moved_redirect(metadata :: map()) :: :ok
Emits a telemetry event when a MOVED redirect occurs.
Executes a telemetry event for a Redis command with timing.