必须手动部署redis_exporter到每个redis节点,因其需直连本地实例采集cluster、client list等关键数据,且静态配置targets比服务发现更可靠,能避免漏采从节点或拓扑变更导致的指标丢失。

直接用 redis_exporter 暴露指标,Prometheus 抓取,Grafana 展示——这是目前最稳定、适配 Redis 7.0 集群的方案。不推荐依赖 Redis 内置 /metrics(7.0 默认不开启且无原生 Prometheus 格式),也不要指望 ServiceMonitor 自动发现能覆盖所有分片节点的密码/地址差异。
为什么必须手动部署 redis_exporter 到每个 Redis 节点
Redis 7.0 集群是去中心化架构,每个主从节点独立运行、可能跨主机、密码一致但地址不同;redis_exporter 必须直连本地 Redis 实例才能采集 INFO CLUSTER、CLIENT LIST、慢查询等关键数据。Kubernetes 的 ServiceMonitor 或云厂商“一键接入”通常只配一个地址,会漏掉从节点或集群拓扑变化后的新增节点。
- 每个 Redis 节点(含主+从)都需单独运行一个
redis_exporter实例,监听:9121(或其他统一端口) - 启动时必须显式指定
--redis.addr=redis://192.168.1.101:6379,不能写localhost(容器或多网卡场景会连错) - 若集群启用了密码,
--redis.password必须传入,且所有节点密码必须完全一致(包括空格),否则redis_exporter启动后无法执行CLUSTER NODES - Redis 7.0 默认禁用
SLOWLOG命令(尤其在云数据库集群版),如需慢日志指标,需提前在redis.conf中配置slowlog-max-len 128和slowlog-log-slower-than 10000
prometheus.yml 里怎么写 job 才不丢指标
静态配置比服务发现更可靠——因为 Redis 集群节点 IP 固定、数量可控(比如 6 节点),硬编码反而避免了标签混乱和目标失联。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
- 用
static_configs显式列出全部 exporter 地址:targets: ['192.168.1.101:9121', '192.168.1.102:9121', ...] - 每个 target 加
labels标明角色与位置:redis_role: master、redis_shard: shard-1、instance: 192.168.1.101:6379(注意不是 exporter 的 9121 端口) - 设置
scrape_interval: 15s,太短会给 Redis 带来额外INFO压力;太长(>30s)会导致故障响应延迟 - 务必加
relabel_configs过滤无效指标:例如去掉redis_connected_clients在从节点为 0 的干扰项,或用labelmap把redis_instance提升为 Prometheus 标签
Grafana 里哪些 Redis 7.0 指标真正有用
别堆砌模板,盯住四个维度:内存饱和度、连接健康度、命令吞吐异常、集群拓扑稳定性。Redis 7.0 新增的 cluster_stats 类指标(如 redis_cluster_stats_keys_per_slot)比旧版更准。
-
redis_memory_used_bytes/redis_memory_max_bytes:看使用率,但注意maxmemory可能未设,此时要结合redis_memory_fragmentation_ratio(>1.5 就该警惕) -
redis_connected_clients对比redis_config_maxclients:连接数接近上限时,redis_rejected_connections_total会突增 -
redis_commands_processed_total按命令拆解:rate(redis_commands_processed_total{cmd=~"set|get|del"}[5m])能快速定位热 key 或误用模式 -
redis_cluster_state(值为 0/1)和redis_cluster_size:必须告警 —— 值变更意味着脑裂或节点失联,比单个up == 0更早发现问题 - 避免用
redis_uptime_in_seconds做存活判断:它只反映redis_exporter进程 uptime,不是 Redis 本身;应改用redis_up == 0+redis_instance标签组合告警
最容易被忽略的是:Redis 7.0 集群模式下,redis_exporter 必须能执行 CLUSTER SLOTS 才能正确打标 slot 分布,而某些云厂商 Redis 服务(如腾讯云集群版)默认禁用该命令。如果 Grafana 里看不到分片级指标,先检查 redis_exporter 日志是否报 ERR unknown command `CLUSTER`,再确认是否需要联系云厂商开通权限或降级使用哨兵模式监控。










