Redis作为高性能缓存与数据结构服务器,在大多数互联网系统中承担着热点数据访问与分布式锁等关键职责。一旦Redis出现性能波动、内存异常或主从延迟,往往会直接影响前端响应时间。传统的监控方式依赖定时执行redis-cli info命令并将结果写入日志或简单展示,这种方式既无法做长时间趋势分析,也难以设置灵活的告警阈值。引入Prometheus和Grafana后,可以将Redis内部状态标准化为时间序列指标,通过可视化面板快速定位问题。

文章将围绕指标体系、采集配置、可视化与告警三个核心部分展开。首先需要明确Redis应该监控哪些指标,再通过redis_exporter将指标暴露给Prometheus,最后在Grafana中构建仪表盘并设置告警。
一、Redis监控的核心指标体系
Redis提供了极为丰富的运行时信息,通过INFO命令可以查看Server、Clients、Memory、Persistence、Stats、Replication、CPU、Cluster等多个分类。并不是每个指标都需要关注,但以下指标应当纳入基础监控范围。
内存相关指标是最优先的。其中used_memory代表Redis当前实际使用的内存总量,包括数据、缓冲区以及内部结构开销。maxmemory是配置的最大内存限制,默认情况下Redis不会主动淘汰数据,一旦超过该值且淘汰策略配置不当,就会导致写入失败。另一个容易被忽略的指标是mem_fragmentation_ratio,它表示内存碎片率,即used_memory_rss与used_memory的比值。该值长期大于1.5说明存在明显内存碎片,小于1则可能发生了内存交换,需要结合系统层面排查。
连接与命令处理指标同样关键。connected_clients反映当前客户端连接数,突然升高可能意味着连接泄漏或业务侧未正确释放连接。blocked_clients表示正在等待阻塞命令(如BLPOP、BRPOP)的客户端数量,如果该值长期不为零,需要检查是否有消费者处理能力不足。命中率方面,keyspace_hits和keyspace_misses的比值决定了缓存的有效性,通常建议命中率保持在95%以上。慢查询指标则可以通过slowlog相关指标结合延迟监控来实现。
持久化与主从复制指标直接影响数据可靠性。rdb_last_bgsave_status和aof_last_write_status分别表示最近一次RDB快照和AOF写入的状态,出现错误时需要立即介入。主从复制中,master_link_status显示主从连接是否正常,slave_repl_offset与主节点的master_repl_offset之间的差值可以反映复制延迟,差值持续扩大说明从节点跟不上主节点的写入速度。
综合来看,一套完整的Redis监控至少应该覆盖内存使用率、碎片率、连接数、命令命中率、主从复制偏移量以及持久化状态。这些指标可以通过redis_exporter自动采集并转换为Prometheus格式。
二、使用Prometheus采集Redis指标
Prometheus本身无法直接读取Redis的INFO输出,需要借助官方维护的redis_exporter。该导出器会连接到一个或多个Redis实例,执行INFO命令并将结果解析为Prometheus可抓取的指标格式。安装方式可以从GitHub发布页下载对应平台的二进制文件,也可以使用Docker容器运行。
最简单的启动方式是直接运行二进制文件,并指定Redis连接地址。例如:
# 启动redis_exporter,默认监听9121端口 ./redis_exporter -redis.addr redis://127.0.0.1:6379 -redis.password 你的密码
如果Redis没有设置密码,可以省略-redis.password参数。建议在生产环境中通过systemd或容器编排工具管理该进程,保证其持续运行。启动后可以访问http://127.0.0.1:9121/metrics查看导出的指标,确认包含大量以redis_开头的指标项。
接下来在Prometheus配置文件中添加抓取任务。以下是一个典型的静态配置示例:
scrape_configs:
- job_name: 'redis'
static_configs:
- targets: ['127.0.0.1:9121']
metrics_path: /metrics
scrape_interval: 15s
scrape_timeout: 10s
当需要在同一台主机上监控多个Redis实例时,可以通过给redis_exporter传递-redis.addr多个地址,或者启动多个exporter实例。更推荐的做法是为每个Redis实例分配独立的exporter,并在Prometheus中通过不同的target标签区分,这样在Grafana中可以使用instance或自定义标签筛选。如果使用Kubernetes,则可以利用Prometheus的服务发现机制自动发现Pod。
采集频率需要根据业务对指标的实时性要求来平衡。默认15秒抓取一次已经能够满足绝大多数场景,过于频繁的抓取会增加Redis和exporter的CPU开销。同时要注意,redis_exporter在执行INFO命令时会对Redis产生一定负载,对于QPS极高的核心实例,建议适当调大抓取间隔并监控exporter自身的资源消耗。
三、Grafana可视化与告警配置
在Grafana中,可以导入社区维护的Redis仪表盘,例如编号为763的经典面板,或者根据自身需求自定义图表。导入后需要选择Prometheus数据源,并确认指标名称与查询表达式匹配。如果使用自定义仪表盘,建议至少创建以下几类面板:内存使用量、内存碎片率、连接数、命令命中率、主从复制延迟、持久化状态以及延迟分位数。
常用PromQL查询包括计算内存使用率:
100 * (redis_memory_used_bytes / redis_memory_max_bytes)
计算命令命中率:
100 * (rate(redis_keyspace_hits_total[5m]) / (rate(redis_keyspace_hits_total[5m]) + rate(redis_keyspace_misses_total[5m])))
查看主从复制延迟可以使用两个偏移量的差值:
redis_master_repl_offset - redis_slave_repl_offset
对于碎片率,直接查询redis_mem_fragmentation_ratio,该值以比率形式返回,大于1.5时需要关注。
告警配置可以选择在Prometheus中定义告警规则,再通过Alertmanager发送通知,也可以使用Grafana自带的告警功能。以内存使用率超过80%为例,Prometheus规则如下:
groups:
- name: redis_alerts
rules:
- alert: RedisMemoryHigh
expr: redis_memory_used_bytes / redis_memory_max_bytes > 0.8
for: 5m
labels:
severity: warning
annotations:
summary: "Redis实例 {{ $labels.instance }} 内存使用率超过80%"
description: "当前值: {{ $value }}"
同样可以设置节点宕机告警:当up == 0时触发,或者主从断连告警:当redis_master_link_status == 0时触发。告警规则需要结合实际业务容忍度调整阈值和持续时间,避免频繁误报。
四、最佳实践与常见问题
多实例监控是实际生产中最常见的需求。建议为每个Redis实例配置独立的exporter,并在Prometheus的targets中为每个实例添加有意义的标签,例如env、region、service,这样在Grafana中可以通过变量下拉选择不同的实例进行查看。标签设计应当从监控系统整体规划出发,避免每个应用各自为政。
常见的故障之一是指标已经采集,但Grafana面板中没有任何数据。这种情况首先检查Prometheus的targets页面中redis任务是否处于UP状态,然后确认Grafana数据源ID和仪表盘查询使用的指标名称是否与实际导出的指标一致。由于redis_exporter不同版本可能存在指标名称差异,升级版本后需要验证面板查询是否仍然有效。
另一个容易忽略的问题是redis_exporter的权限。如果Redis配置了requirepass,必须正确传递密码参数,否则exporter会反复重连导致指标缺失。同时,如果使用云厂商提供的Redis服务,需要确认是否开放了INFO命令权限,部分托管服务可能限制某些命令的执行。
关于性能影响,redis_exporter默认每隔几秒执行一次INFO命令,对于内存较大的实例,INFO命令本身可能耗时数毫秒到数十毫秒。如果Redis实例承担了极高的读写压力,可以适当增大Prometheus的抓取间隔,或使用CONFIG SET slowlog-log-slower-than监控慢查询。在极少数情况下,如果发现exporter导致Redis响应变慢,可以将其部署在独立的监控节点上,通过降低抓取频率来减轻影响。
最终,一套稳定的Redis监控体系需要结合指标采集、可视化分析和告警通知三个环节。Prometheus与Grafana的组合提供了灵活的扩展能力,随着Redis集群规模扩大,还可以引入分层联邦、远程存储等方案。先从核心指标开始搭建,再逐步完善面板和告警,是投入产出比最高的实践路径。
Redis监控指标PrometheusGrafana修改时间:2026-08-27 02:21:39