redis_exporter 是什么
redis_exporter 通过 INFO、CONFIG 等命令采集 Redis 的内存、连接、命中率与持久化状态,并以 /metrics 暴露给 Prometheus,默认监听 9121 端口。它是 Redis 监控的基础组件:单机、主从、Cluster 都能接,配合 redis_up 判断可连接性,用内存与命中率指标做容量与性能分析。
基本信息
| 默认端口 | 9121 |
|---|---|
| 采集对象 | Redis 单机 / 主从 / Sentinel / Cluster |
| 连接方式 | redis:// 地址,支持密码与 TLS |
| 关键指标 | redis_up、内存、连接数、命中率 |
| 多实例方式 | exporter 代理采集或多实例各跑一份 |
| 依赖 | 需要能执行 INFO 等只读命令 |
典型使用场景
- 监控 Redis 内存使用率,逼近 maxmemory 时提前扩容
- 用命中率下降发现缓存穿透或键大量过期
- 监控连接数,避免达到 maxclients 造成拒绝服务
- 观察主从延迟与复制状态,及时发现问题实例
- 关注持久化(RDB 保存、AOF 重写)失败与耗时
- 多实例场景统一采集,按 instance 标签区分
配置与运行
配置与运行
redis_exporter --redis.addr=redis://127.0.0.1:6379 # 无密码
redis_exporter --redis.addr=redis://127.0.0.1:6379 --redis.password=***
# 常用查询
redis_up # 可连接性
redis_memory_used_bytes / redis_memory_max_bytes # 内存使用率(注意 max 为 0)
sum(rate(redis_keyspace_hits_total[5m]))
/ (sum(rate(redis_keyspace_hits_total[5m])) + sum(rate(redis_keyspace_misses_total[5m]))) # 命中率关键指标读法
| 指标 | 含义 | 异常信号 |
|---|---|---|
| redis_up | 能否成功采集 | 0 表示连接失败或被拒 |
| redis_memory_used_bytes | 已用内存 | 逼近 maxmemory 需扩容 |
| redis_connected_clients | 当前连接数 | 接近 maxclients 有风险 |
| redis_keyspace_hits/misses | 命中与未命中计数 | 命中率持续下滑 |
| redis_commands_duration_seconds_total | 慢命令耗时汇总 | 单项耗时异常增长 |
多实例场景可让 exporter 按 target 参数代理采集,或多实例各跑一份由 Prometheus 分别抓取;前者省进程,后者隔离性更好。
redis_memory_max_bytes 为 0 表示未设置上限,直接相除会得到 Inf;判断内存风险要先看该指标是否为 0。
耗时命令(如大 key 扫描、慢查询统计)会拉长采集时间,抓取 timeout 要留足余地,必要时避开业务高峰。
主从与 Cluster 场景关注点不同:主从看复制延迟与偏移量,Cluster 还要看槽位分布与节点角色是否稳定。
内存增长要结合键数量与过期策略一起看:键数不涨而内存涨,往往是大 key 或碎片率升高。