一、prometheus监控redis
prometheus监控redis需要使用redis_exporter组件,本文包含redis_exporter的安装、prometheus配置、grafana配置、告警规则文件配置。
外发告警配置(邮件告警、企业微信告警)不在本文描述,可参考prometheus监控node_exporter中告警信息配置。
1.1 redis安装配置
本次redis版本为redis4.0.9,采用编译安装
安装编译环境
bash
yum -y install make gcc
下载解压redis包
bash
wget http://download.redis.io/releases/redis-4.0.9.tar.gz
tar -xf redis-4.0.9.tar.gz
编译安装
bash
mv redis-4.0.9 /usr/local/redis/
cd /usr/local/redis/
make
配置redis服务
bash
vim /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis Service
After=network.target
[Service]
User=redis
Group=redis
Type=simple
ExecStart=/usr/local/redis/src/redis-server /usr/local/redis/redis.conf
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
服务自启设置
bash
systemctl daemon-reload
systemctl start redis
systemctl start redis.service
1.2 redis_exporter下载安装
reids_exporter用于采集redis服务的监控数据,下载连接:reids_exporter

redis_exporter安装
bash
[root@localhost redis]# tar -xf redis_exporter-v1.80.1.linux-amd64.tar.gz
[root@localhost redis]# cd redis_exporter-v1.80.1.linux-amd64/
[root@localhost redis_exporter-v1.80.1.linux-amd64]# ls
LICENSE README.md redis_exporter
[root@localhost redis_exporter-v1.80.1.linux-amd64]# ./redis_exporter
INFO[0000] Redis Metrics Exporter v1.80.1 build date: 2025-11-22-15:33:33 sha1: b0a03b20062314a8ac2918f5c377ebaf44cc8bd8 Go: go1.25.4 GOOS: linux GOARCH: amd64
INFO[0000] Setting log level to "info"
INFO[0000] Providing metrics at :9121/metrics
访问9121端口查看,可以看到metrics

配置reids_exporter服务
bash
[root@localhost redis]# mv redis_exporter-v1.80.1.linux-amd64 /usr/local/redis_exporter
[root@localhost redis]# cat /usr/lib/systemd/system/redis_exporter.service
[Unit]
Description=Redis Service
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/redis_exporter/redis_exporter
PrivateTmp=true
[Install]
WantedBy=multi-user.target
[root@localhost redis]# systemctl daemon-reload
[root@localhost redis]# systemctl start redis_exporter.service
1.3 prometheus配置
prometheus.yml文件配置
bash
# 在prometheus配置文件中增加redis_exporter的配置
# 监控redis的数据采集组件
- job_name: "redis"
static_configs:
- targets: ["192.168.56.112:9121"]
重启prometheus,可以看到prometheus连接redis_exporter成功

rules/redis_alerts.yml文件配置
bash
groups:
- name: redis_alerts
rules:
# Redis 服务宕机告警
- alert: RedisDown
expr: up{job="redis"} == 0
for: 5m
labels:
severity: critical
annotations:
summary: "Redis 服务在 {{ $labels.instance }} 上不可用。"
description: "Redis 服务已经没有响应超过 5 分钟,可能发生故障。"
# Redis 内存使用率过高告警
- alert: RedisMemoryUsageHigh
expr: redis_memory_used_bytes / redis_memory_max_bytes > 0.85
for: 5m
labels:
severity: warning
annotations:
summary: "Redis 在 {{ $labels.instance }} 上的内存使用超过 85%。"
description: "Redis 实例的内存使用量超过了 85%,可能会导致内存耗尽。"
# Redis 内存超出最大限制告警
- alert: RedisMemoryLimitExceeded
expr: redis_memory_used_bytes > redis_memory_max_bytes
for: 5m
labels:
severity: critical
annotations:
summary: "Redis 在 {{ $labels.instance }} 上的内存使用超过最大限制。"
description: "Redis 的内存使用量已经超过了配置的最大内存限制,可能会导致数据驱逐或服务不稳定。"
# Redis 连接数过多告警
- alert: RedisTooManyConnections
expr: redis_connected_clients > 1000
for: 5m
labels:
severity: warning
annotations:
summary: "Redis 在 {{ $labels.instance }} 上的活跃连接数过多。"
description: "Redis 实例的连接数超过了 1000,可能需要检查客户端连接,或考虑扩展 Redis 实例。"
# Redis 慢查询告警
- alert: RedisSlowQueries
expr: rate(redis_commands_processed_total{command="slowlog"}[5m]) > 0
for: 5m
labels:
severity: warning
annotations:
summary: "Redis 在 {{ $labels.instance }} 上检测到慢查询。"
description: "Redis 正在处理慢查询,可能表示性能问题或配置不当。"
# Redis 键空间命中率低告警
- alert: RedisKeyspaceHitsLow
expr: redis_keyspace_hits_total / (redis_keyspace_hits_total + redis_keyspace_misses_total) < 0.9
for: 5m
labels:
severity: critical
annotations:
summary: "Redis 在 {{ $labels.instance }} 上的键空间命中率低于 90%。"
description: "Redis 的键空间命中率低于 90%,表明缓存未能有效使用,可能导致更多的磁盘读取操作,影响性能。"
# Redis 键空间的 key 数量过高告警
- alert: RedisKeyspaceSizeHigh
expr: redis_db_keys > 1000000
for: 5m
labels:
severity: warning
annotations:
summary: "Redis 在 {{ $labels.instance }} 上的键空间大小过大。"
description: "Redis 中的键数量超过 100 万。需要审查 Redis 数据库的大小或进行清理操作。"
# Redis CPU 使用率高告警(适用于 Redis 专用服务器)
- alert: RedisHighCpuUsage
expr: rate(process_cpu_seconds_total[5m]) > 0.75
for: 5m
labels:
severity: warning
annotations:
summary: "Redis 在 {{ $labels.instance }} 上的 CPU 使用超过 75%。"
description: "Redis 实例的 CPU 使用率超过了 75%。可能是由于大量请求,或者 Redis 配置不合理。"
# Redis 持久化操作时间过长告警
- alert: RedisRdbBgsaveDurationHigh
expr: redis_rdb_current_bgsave_duration_sec > 30
for: 5m
labels:
severity: critical
annotations:
summary: "Redis 背景保存 (BGSAVE) 操作在 {{ $labels.instance }} 上执行时间过长。"
description: "Redis 背景保存 (BGSAVE) 操作已经运行超过 30 秒,可能影响 Redis 性能。"
# Redis AOF 持久化操作时间过长告警
- alert: RedisAofRewriteDurationHigh
expr: redis_aof_current_rewrite_duration_sec > 30
for: 5m
labels:
severity: critical
annotations:
summary: "Redis AOF 重写操作在 {{ $labels.instance }} 上执行时间过长。"
description: "Redis AOF 重写操作已经运行超过 30 秒,可能影响 Redis 可用性和性能。"
# Redis 命令执行时间过长告警
- alert: RedisCommandSlow
expr: rate(redis_commands_duration_seconds_total[5m]) > 0.05
for: 5m
labels:
severity: warning
annotations:
summary: "Redis 命令在 {{ $labels.instance }} 上执行时间过长。"
description: "Redis 命令执行时间超出了预期,可能存在性能瓶颈。"
配置完成重启prometheus,由于redis没有配置最大内存,默认为0,会触发相关报警。

邮箱接收到告警信息

1.4 grafana配置
在这里使用grafana官方的redis模板,ID为17057

导入后发现获取不到CPU使用率与内存使用率

解决方法如下:
CPU使用率获取失败
将原有的redis_cpu_util * on (iid) group_right redis_up{instance=~"$instance"}替换为rate(process_cpu_seconds_total{job="redis", instance=~"$instance"}[1m])

内存使用率获取失败
在redis.conf配置文件中启用maxmemory参数并设置合适大小

重启redis服务后即可获取内存使用率
