Skip to main content
APA
Sponsored by CAST AI — Kubernetes cost optimization Better Stack — Uptime monitoring and log management
⚠️

Alert thresholds depend on the nature of your applications. Some queries may have arbitrary tolerance thresholds. Building an efficient monitoring platform takes time. 😉

Redis Prometheus Alert Rules

12 Prometheus alerting rules for Redis. Exported via oliver006/redis_exporter. These rules cover critical and warning conditions — copy and paste the YAML into your Prometheus configuration.

wget https://raw.githubusercontent.com/samber/awesome-prometheus-alerts/refs/heads/master/dist/rules/redis/oliver006-redis-exporter.yml
critical

2.7.1. Redis down

Redis instance is down

  # 1m delay allows a restart without triggering an alert.
- alert: RedisDown
  expr: redis_up == 0
  for: 1m
  labels:
    severity: critical
  annotations:
    summary: Redis down (instance {{ $labels.instance }})
    description: "Redis instance is down\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.7.2. Redis missing master

Redis cluster has no node marked as master.

- alert: RedisMissingMaster
  expr: (count(redis_instance_info{role="master"}) or vector(0)) < 1
  for: 0m
  labels:
    severity: critical
  annotations:
    summary: Redis missing master (instance {{ $labels.instance }})
    description: "Redis cluster has no node marked as master.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.7.3. Redis too many masters

Redis cluster has too many nodes marked as master.

  # 1m delay allows a restart without triggering an alert.
- alert: RedisTooManyMasters
  expr: count(redis_instance_info{role="master"}) > 1
  for: 1m
  labels:
    severity: critical
  annotations:
    summary: Redis too many masters (instance {{ $labels.instance }})
    description: "Redis cluster has too many nodes marked as master.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.7.4. Redis disconnected slaves

Redis not replicating for all slaves. Consider reviewing the redis replication status.

- alert: RedisDisconnectedSlaves
  expr: count without (instance, job) (redis_connected_slaves) - sum without (instance, job) (redis_connected_slaves) - 1 > 0
  for: 0m
  labels:
    severity: critical
  annotations:
    summary: Redis disconnected slaves (instance {{ $labels.instance }})
    description: "Redis not replicating for all slaves. Consider reviewing the redis replication status.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.7.5. Redis replication broken

Redis instance lost a slave

- alert: RedisReplicationBroken
  expr: delta(redis_connected_slaves[1m]) < 0
  for: 0m
  labels:
    severity: critical
  annotations:
    summary: Redis replication broken (instance {{ $labels.instance }})
    description: "Redis instance lost a slave\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.7.6. Redis cluster flapping

Changes have been detected in Redis replica connection. This can occur when replica nodes lose connection to the master and reconnect (a.k.a flapping).

- alert: RedisClusterFlapping
  expr: changes(redis_connected_slaves[1m]) > 1
  for: 2m
  labels:
    severity: critical
  annotations:
    summary: Redis cluster flapping (instance {{ $labels.instance }})
    description: "Changes have been detected in Redis replica connection. This can occur when replica nodes lose connection to the master and reconnect (a.k.a flapping).\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.7.7. Redis missing backup

Redis has not been backed up for 48 hours

- alert: RedisMissingBackup
  expr: time() - redis_rdb_last_save_timestamp_seconds > 60 * 60 * 48
  for: 0m
  labels:
    severity: critical
  annotations:
    summary: Redis missing backup (instance {{ $labels.instance }})
    description: "Redis has not been backed up for 48 hours\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.7.8. Redis out of system memory

Redis is running out of system memory (> 90%)

  # The exporter must be started with --include-system-metrics flag or REDIS_EXPORTER_INCL_SYSTEM_METRICS=true environment variable.
- alert: RedisOutOfSystemMemory
  expr: redis_memory_used_bytes / redis_total_system_memory_bytes * 100 > 90 and redis_total_system_memory_bytes > 0
  for: 2m
  labels:
    severity: warning
  annotations:
    summary: Redis out of system memory (instance {{ $labels.instance }})
    description: "Redis is running out of system memory (> 90%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.7.9. Redis out of configured maxmemory

Redis is running out of configured maxmemory (> 90%)

- alert: RedisOutOfConfiguredMaxmemory
  expr: redis_memory_used_bytes / redis_memory_max_bytes * 100 > 90 and on(instance) redis_memory_max_bytes > 0
  for: 2m
  labels:
    severity: warning
  annotations:
    summary: Redis out of configured maxmemory (instance {{ $labels.instance }})
    description: "Redis is running out of configured maxmemory (> 90%)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.7.10. Redis too many connections

Redis is running out of connections (> 90% used)

- alert: RedisTooManyConnections
  expr: redis_connected_clients / redis_config_maxclients * 100 > 90 and redis_config_maxclients > 0
  for: 2m
  labels:
    severity: warning
  annotations:
    summary: Redis too many connections (instance {{ $labels.instance }})
    description: "Redis is running out of connections (> 90% used)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.7.11. Redis not enough connections

Redis instance should have more connections (> 5)

- alert: RedisNotEnoughConnections
  expr: redis_connected_clients < 5
  for: 2m
  labels:
    severity: warning
  annotations:
    summary: Redis not enough connections (instance {{ $labels.instance }})
    description: "Redis instance should have more connections (> 5)\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.7.12. Redis rejected connections

Some connections to Redis has been rejected

- alert: RedisRejectedConnections
  expr: increase(redis_rejected_connections_total[1m]) > 5
  for: 0m
  labels:
    severity: warning
  annotations:
    summary: Redis rejected connections (instance {{ $labels.instance }})
    description: "Some connections to Redis has been rejected\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"