Redis 指标导出器
redis_exporter 默认监听 9121 的 /metrics:它连接 Redis 执行 INFO 一类命令,把内存占用、命中率、连接数、主从复制与持久化状态转成 Prometheus 指标。Redis 自身不输出 Prometheus 格式,导出器是接入监控体系的标准做法。
基本信息
| 服务 | redis_exporter |
|---|---|
| 协议 | TCP/HTTP(/metrics) |
| 默认端口 | 9121 |
| 连接参数 | --redis.addr、--redis.password-file |
| 暴露面 | 仅监控网段 |
典型使用场景
- 内存与持久化指标接入 Prometheus,设置内存水位告警
- 跟踪命中率,验证缓存策略调整的效果
- 主从复制监控:提前发现复制延迟与断链
- 多实例采集:按实例地址区分标签
- 阻塞与慢命令排查:结合 Redis 自身命令输出定位
部署与验证
部署与验证
redis_exporter --redis.addr=redis://127.0.0.1:6379 \
--redis.password-file=/etc/redis_exporter.pass --web.listen-address=:9121
curl -s http://cache01:9121/metrics | grep -E 'redis_up|redis_memory_used_bytes'
ss -lntp | grep 9121排障与核对
| 检查项 | 做法 | 异常表现 |
|---|---|---|
| 导出器存活 | curl -s http://host:9121/metrics | 连不上:进程未起或监听地址错误 |
| Redis 连通 | redis_up 指标 | 为 0:口令或地址错,也可能被网络策略拦 |
| 内存 | redis_memory_used_bytes | 逼近 maxmemory:淘汰策略即将生效 |
| 复制 | 主从相关指标 | 延迟上升:先查网络与主库负载 |
口令建议用 --redis.password-file 从文件读取,不要写在命令行:命令行参数在进程列表与 /proc 中对同机用户可见,而文件权限可以单独收紧到运维账号。
多实例与标签设计
一台机器跑多个 Redis 实例时,导出器可以分别启动,也可以用带 target 参数的多目标采集方式。Prometheus 侧要用不同 job 或标签区分实例;标签设计不当会把不同实例的曲线叠在同一张图上,容量判断随之失真。
redis_up 为 0 时要先区分是导出器连不上,还是 Redis 真挂了:直接用 redis-cli 登录验证最快。若 Redis 配了 requirepass 而导出器没带口令,表现就是持续 up=0,业务却完全正常。
把口令写进启动命令行:任何能读进程列表或 /proc 的本机用户都能拿到 Redis 口令,进而清库或篡改数据。
导出器与 Redis 的版本差异会影响指标可用性:新版 Redis 新增的 INFO 字段在旧导出器上读不到,升级其中一侧后要复核关键指标是否仍在采集,否则监控会悄悄缺项。