关键配置错误导致监控失败:redis_exporter地址、认证方式及Prometheus job配置三处最易出错;需正确传参、区分端口、设置labels和scrape_interval,并处理内存指标除零问题。

能直接用,但关键配置点一错就收不到指标——尤其是 redis_exporter 的地址、认证方式和 Prometheus 的 job 配置三处,80% 的监控失败都卡在这儿。
redis_exporter 启动时如何正确传入 Redis 地址和密码
不加认证或填错格式会导致 redis_exporter 启动成功但拉取指标失败,日志里只显示 “connection refused” 或 “AUTH failed”,实际是连不上 Redis 本体。
- 无密码 Redis:
./redis_exporter redis://localhost:6379(注意协议头必须写redis://,不能只写localhost:6379) - 有密码 Redis:
./redis_exporter --redis.addr redis://localhost:6379 --redis.password yourpass(--redis.password是 v1.45+ 推荐写法;旧版用-redis.password也能工作,但参数名易混淆) - 集群模式需额外加
--redis.is-cluster,否则只采集第一个节点 - 若 Redis 启用了用户名(如 ACL),必须用
--redis.username显式指定,否则默认用default用户尝试认证,大概率失败
prometheus.yml 中 job 配置的常见陷阱
很多人以为只要 targets 写对了就能抓到数据,其实 redis_exporter 是独立服务,Prometheus 抓的是它暴露的 :9121/metrics,不是 Redis 本身的 :6379。
Redis 缓存和数据结构管理技能。通过自然语言操作 Redis,支持 String、Hash、List、Set、ZSet、Stream 等数据结构操作。当用户提到 Redis、缓存、消息队列、会话存储时使用此技能。
-
targets必须填redis_exporter所在机器的 IP + 端口(如192.168.44.168:9121),不是 Redis 的地址 - 如果
redis_exporter和 Prometheus 不在同一台机器,且中间有防火墙或安全组,要确认9121端口对外可访问 - 建议加
labels区分实例:labels: { instance: "cache-prod" },否则多个 Redis 实例共用一个 exporter 时,在 Grafana 里无法按实例筛选 - 别漏掉
scrape_interval,默认 1m 足够,但若 Redis 压力大、指标波动快,可设为15s,不过要同步调高 Prometheus 存储压力
Grafana 导入 Dashboard 后 Memory Usage 为空怎么办
这是最常被问的问题:面板里内存使用率图表始终是空的,查 Prometheus 却能看到 redis_memory_used_bytes 有值,问题出在计算公式里依赖的 redis_memory_max_bytes。
- Redis 默认不限制最大内存(
maxmemory为 0),所以redis_memory_max_bytes指标返回 0,导致除零错误,Grafana 图表渲染失败 - 解决方法:在 Grafana 面板编辑器中,把原表达式
redis_memory_used_bytes / redis_memory_max_bytes * 100改成redis_memory_used_bytes / 1073741824(即除以 1GB 字节数),前提是你的 Redis 配置了maxmemory 1gb - 更健壮的做法:在 Prometheus 中加一条 recording rule,预计算一个带默认值的指标,例如:
redis_memory_usage_ratio = redis_memory_used_bytes / (redis_memory_max_bytes or vector(1073741824)) - 顺带一提:
redis_memory_used_human这类带单位的指标不能用于计算,只能展示,PromQL 里必须用_bytes后缀的原始数值型指标
真正难的不是装上,而是让每个指标都稳定、可解释、能归因——比如看到 redis_connected_clients 突增,得立刻能关联到是哪个业务方、哪类命令、是否触发了连接泄漏。这要求从 redis_exporter 的 label 设计、Prometheus 的 relabel 配置,到 Grafana 的变量下拉联动,每层都要对齐业务语义,而不是堆完组件就收工。


















