Skip to content

Conversation

paulojmdias
Copy link
Member

@paulojmdias paulojmdias commented Sep 1, 2025

Description

Add support for exposing Redis sentinel and mode metrics.

Redis Sentinel metrics with Redis mode:

# HELP redis_mode Redis server mode
# TYPE redis_mode gauge
redis_mode{mode="sentinel",otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 1
# HELP redis_sentinel_masters Number of masters monitored by Sentinel.
# TYPE redis_sentinel_masters gauge
redis_sentinel_masters{otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 1
# HELP redis_sentinel_running_scripts Number of running Sentinel scripts.
# TYPE redis_sentinel_running_scripts gauge
redis_sentinel_running_scripts{otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 0
# HELP redis_sentinel_scripts_queue_length Length of Sentinel scripts queue.
# TYPE redis_sentinel_scripts_queue_length gauge
redis_sentinel_scripts_queue_length{otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 0
# HELP redis_sentinel_simulate_failure_flags Simulated failure flags bitmask.
# TYPE redis_sentinel_simulate_failure_flags gauge
redis_sentinel_simulate_failure_flags{otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 0
# HELP redis_sentinel_tilt Whether Sentinel is in TILT mode (1 = tilt, 0 = normal).
# TYPE redis_sentinel_tilt gauge
redis_sentinel_tilt{otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 0
# HELP redis_sentinel_tilt_since_seconds Duration in seconds of current TILT, or -1 if not in TILT mode.
# TYPE redis_sentinel_tilt_since_seconds gauge
redis_sentinel_tilt_since_seconds{otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} -1
# HELP redis_sentinel_tilt_total Total TILT occurrences since start.
# TYPE redis_sentinel_tilt_total counter
redis_sentinel_tilt_total{otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 0

Redis mode (standalone):

# HELP redis_mode Redis server mode
# TYPE redis_mode gauge
redis_mode{mode="standalone",otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 1

Redis mode (cluster):

# HELP redis_mode Redis server mode
# TYPE redis_mode gauge
redis_mode{mode="cluster",otel_scope_name="github.com/open-telemetry/opentelemetry-collector-contrib/receiver/redisreceiver",otel_scope_schema_url="",otel_scope_version="0.134.0-dev"} 1

Link to tracking issue

Fixes #42365

Testing

I tested this against all the possible modes (sentinel, standalone, and cluster). The sentinel metrics are only evaluated and exposed when redis_mode:sentinel.

I also added integration tests TestIntegrationV8Sentinel for the sentinel mode.

Documentation

Updated the documentation using mdatagen

Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
Signed-off-by: Paulo Dias <paulodias.gm@gmail.com>
@paulojmdias paulojmdias marked this pull request as ready for review September 2, 2025 00:02
@paulojmdias paulojmdias requested review from a team and dmitryax as code owners September 2, 2025 00:02
@github-actions github-actions bot added the receiver/redis Redis related issues label Sep 2, 2025
@github-actions github-actions bot requested a review from hughesjj September 2, 2025 00:02

// recordSentinelMetrics records metrics from Redis INFO when running in Sentinel mode.
// Runs only when rs.getRedisMode(inf) == "sentinel".
func (rs *redisScraper) recordSentinelMetrics(ts pcommon.Timestamp, inf info) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use existing recordCommonMetrics instead?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I improved the recordCommonMetrics function to receive an additional parameter indicating what should be recorded. PTAL and let me know what you think.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add support for Redis sentinel information

4 participants