Redis Exporter 连不上主因是认证或网络策略:启用密码需显式传参--redis.password;Docker 部署注意网络模式;ACL 需授予 INFO/CONFIG/CLIENT LIST 权限;Prometheus targets 应指向 exporter 的 9121 端口而非 Redis 的 6379。

Redis Exporter 怎么装才不会连不上
Redis 本身不暴露 Prometheus 所需的指标格式,必须靠 redis_exporter 做协议转换。常见连不上不是因为端口没开,而是认证或网络策略卡在第一步。
- 如果 Redis 启用了密码(
requirepass),启动redis_exporter时必须显式传参:--redis.password=xxx,光配redis://:xxx@host:6379URL 不生效 - Docker 部署时注意网络模式:容器默认无法访问宿主机的
127.0.0.1,要用host.docker.internal(Mac/Win)或--network host(Linux) - Redis 6+ 启用 ACL 后,
redis_exporter需要至少INFO、CONFIG、CLIENT LIST权限,仅default用户可能被拒绝
prometheus.yml 里 scrape_configs 怎么写才不丢指标
配置错误会导致采集完全静默,且 Prometheus 不报错——它只默默跳过无法连接的目标。
-
static_configs中的targets必须指向redis_exporter的 HTTP 端口(默认9121),不是 Redis 的6379 - 若用服务发现(如 Consul 或 Kubernetes),确保标签中包含
__meta_*字段能正确解析出 exporter 地址,而不是误解析成 Redis 实例地址 - 加
params: {format: "prometheus"}是多余操作,redis_exporter只响应/metrics,不支持参数控制格式
为什么 redis_connected_clients 指标总是 0
这个值为 0 通常意味着 redis_exporter 虽然连上了 Redis,但没拿到有效响应——多数是权限或命令禁用导致。
- 检查 Redis 日志是否出现
Command not allowed,特别是INFO命令被 ACL 屏蔽 - 某些云 Redis(如阿里云 ApsaraDB)默认禁用
CONFIG和CLIENT LIST,而redis_exporter启动时会尝试执行它们来探测能力,失败后可能降级采集,部分指标丢失 - 用
curl http://localhost:9121/metrics | grep connected_clients直接看 exporter 输出,确认该指标是否存在,排除 PromQL 查询问题
Grafana 里 Redis Dashboard 加载慢或数据断层
不是网络或 Redis 本身的问题,大概率是查询范围或函数用错了。
-
rate(redis_commands_total[5m])这类聚合在低频实例上容易返回空——改用irate()更稳妥,尤其当采集间隔 >15s 时 - Dashboard 中硬编码了
job="redis",但你的scrape_configs里 job 名可能是redis-exporter,指标直接查不到 - 内存相关指标(如
redis_memory_used_bytes)单位是字节,Grafana 面板若设成 “MB” 却没勾选 “Unit > bytes”,数值会小 100 万倍,看起来像归零
真正麻烦的是多实例场景下 target 标签混乱——比如所有 Redis 实例都用同一个 instance 标签,或者用 IP 但没加端口,结果 metrics 混在一起没法区分。这问题不会报错,但排查起来得翻好几层 relabel_configs。








