Skip to main content
APA
Sponsored byCAST AI — Kubernetes cost optimizationBetter Stack — Uptime monitoring and log managementVictoriaMetrics — Fast, open-source time series database and drop-in Prometheus replacement.

Redis logoRedis Prometheus Alert Rules

16 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.

⚠️

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

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 state not ok

The Redis Cluster reports a non-ok state, meaning it is unable to serve queries, typically because hash slots are unassigned or too many nodes are down.

- alert: RedisClusterStateNotOk
  expr: redis_cluster_state == 0
  for: 5m
  labels:
    severity: critical
  annotations:
    summary: Redis cluster state not ok (instance {{ $labels.instance }})
    description: "The Redis Cluster reports a non-ok state, meaning it is unable to serve queries, typically because hash slots are unassigned or too many nodes are down.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.7.7.Redis master link down

Redis replica {{ $labels.instance }} has lost its connection to master {{ $labels.master_host }}:{{ $labels.master_port }} and is no longer receiving updates.

- alert: RedisMasterLinkDown
  expr: redis_master_link_up == 0
  for: 2m
  labels:
    severity: critical
  annotations:
    summary: Redis master link down (instance {{ $labels.instance }})
    description: "Redis replica {{ $labels.instance }} has lost its connection to master {{ $labels.master_host }}:{{ $labels.master_port }} and is no longer receiving updates.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.7.8.Redis cluster slot fail

Some hash slots of the Redis Cluster are marked as FAIL, meaning part of the keyspace is unreachable and requires manual intervention or a failover.

- alert: RedisClusterSlotFail
  expr: redis_cluster_slots_fail > 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Redis cluster slot fail (instance {{ $labels.instance }})
    description: "Some hash slots of the Redis Cluster are marked as FAIL, meaning part of the keyspace is unreachable and requires manual intervention or a failover.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
warning

2.7.9.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.10.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 }}"
critical

2.7.11.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 }}"
warning

2.7.12.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.13.Redis not enough connections

Redis instance should have more connections (> 5)

  # 5 connections is a rough default; the expected minimum depends heavily on your application's usage pattern — adjust based on your baseline. Non-application connections (monitoring, admin/CLI sessions, replication) also keep a baseline count above zero even when the app itself is idle.
- 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.14.Redis rejected connections

Some connections to Redis has been rejected

  # 5 rejected connections in 1m is a rough default; rejection volume correlates with your traffic load relative to the configured maxclients limit — adjust based on your workload.
- 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 }}"
warning

2.7.15.Redis cluster slot pfail

Some hash slots of the Redis Cluster are tentatively marked as PFAIL (possibly failing), an early warning sign of node problems before they escalate to a hard FAIL state.

- alert: RedisClusterSlotPfail
  expr: redis_cluster_slots_pfail > 0
  for: 5m
  labels:
    severity: warning
  annotations:
    summary: Redis cluster slot pfail (instance {{ $labels.instance }})
    description: "Some hash slots of the Redis Cluster are tentatively marked as PFAIL (possibly failing), an early warning sign of node problems before they escalate to a hard FAIL state.\n  VALUE = {{ $value }}\n  LABELS = {{ $labels }}"
critical

2.7.16.Redis missing backup

Redis has not been backed up for 48 hours

  # 48 hours is a rough default; how often a backup is needed depends on your backup/retention policy and data-loss tolerance — adjust based on your workflow.
- 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 }}"