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 }}"