redis_exporter需正确配置连接参数才能采集Redis指标:必须指定密码(--redis.password)、集群模式启用(--redis.cluster=true)、绑定地址开放且防火墙放行6379端口;云Redis需开启监控白名单;Prometheus targets应指向redis_exporter地址(如10.1.2.3:9121),非Redis本身。

直接用 redis_exporter + Prometheus + Grafana 这套组合,是目前最稳定、可落地的实时监控方案。它不依赖客户端埋点,也不需要改业务代码,只要 Redis 实例能被访问,就能采集全量指标。
怎么让 redis_exporter 正确采集到 Redis 指标?
很多问题出在连接配置和权限上,不是 exporter 本身坏了。
-
redis_exporter默认走INFO命令,如果 Redis 配了密码,必须加--redis.password=xxx,否则返回空或报错NOAUTH Authentication required - 集群模式下要用
--redis.cluster=true,否则只扫第一个节点,漏掉其他分片的connected_clients、used_memory等关键数据 - 如果 Redis 绑定在
127.0.0.1,而redis_exporter在另一台机器跑,得确认bind配置放开或用了0.0.0.0,且防火墙放行端口(默认6379) - 某些云 Redis(如阿里云 Tair、腾讯云 CRS)禁用
INFO或限制字段,需开启「监控白名单」或使用平台自带 exporter
Prometheus 抓不到 redis_exporter 的 metrics 怎么办?
常见原因是 target 配置写错,或者 exporter 根本没起来。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 检查
redis_exporter是否监听正确地址:启动后执行curl http://localhost:9121/metrics,有大量redis_开头的指标才说明正常 - Prometheus 的
scrape_configs中targets必须填redis_exporter所在机器的 IP+端口,不是 Redis 的地址;例如:- targets: ['10.1.2.3:9121'] - 如果用 Docker 启动
redis_exporter,宿主机访问时别写localhost,要写容器所在主机的真实 IP,或用host.docker.internal(Mac/Win) - 抓取间隔设太短(如
scrape_interval: 5s)可能导致 Prometheus 负载高、指标抖动,建议从15s起步
哪些 Redis 指标必须设告警?
别堆一堆低价值告警,盯紧这三类真正影响服务可用性的指标:
-
redis_connected_clients>redis_config_maxclients* 0.8:连接数快打满,新请求会直接被拒,错误信息是ERR max number of clients reached -
redis_used_memory_percent> 90:内存超限触发淘汰策略,缓存命中率断崖下跌,DB 压力飙升;注意这个指标是计算值,需在 Prometheus 里写:redis_memory_used_bytes / redis_config_maxmemory_bytes * 100 -
redis_keyspace_hits_total和redis_keyspace_misses_total计算出的命中率连续 5 分钟 - 额外提醒:
redis_blocked_clients> 0 持续超过 2 分钟,说明有大量BLPOP类阻塞命令没及时消费,可能下游消费者挂了
真正难的是把指标和业务现象对齐——比如 used_memory 突增,得结合 redis_command_calls_total{command=~"hset|lpush|sadd"} 看是不是某类写入暴增;latency_usec 高,得看是不是 bigkey 导致,而不是只调大 timeout。这些关联分析没法靠单点告警解决,得靠 Grafana 里联动看板。

















