Redis 缓存监控接入

更新时间:
复制 MD 格式

本文介绍如何将自建 Redis/Valkey 接入云监控 2.0。接入组件基于 aio-exporter 的 Redis 适配,采集性能、内存、客户端连接、键空间命中与淘汰、持久化与主从复制等指标,支持 Redis 5.x+(完整功能需 ≥ 6.2),兼容 Valkey 7.x/8.x/9.x,支持 ACK 集群(CS)与 ECS(VPC) 两种部署环境。接入后自动生成 Redis 实例实体与内置大盘。

支持的中间件条件

接入前请确认目标实例满足以下条件,否则可能出现采集不到数据或指标缺失。

条件项

要求

版本

Redis 5.x+(完整功能需 ≥ 6.2,延迟直方图需 ≥ 7.0);ACL 用户名需 Redis ≥ 6.0。兼容 Valkey 7.x/8.x/9.x

部署形态

自建 Redis/Valkey;云托管实例在满足账号与网络条件时也可接入

认证

Redis 6+ 推荐独立 ACL 监控用户;仅 requirepass 时可只填密码、用户名留空。用户名与密码分字段填写,勿写入地址

网络连通

CS 环境要求目标 Redis 可在所选 ACK 集群网络内连通;ECS(VPC) 环境要求托管探针交换机网段可访问目标 ECS

前提条件

  • 已开通可观测监控Prometheus版。

  • 接入 CS 环境:目标 ACK 集群已接入云监控 2.0,且集群状态为运行中;目标 Redis 服务可在该集群网络内连通。

  • 接入 ECS(VPC) 环境:已选定目标 Redis 所在 ECS,并确保托管探针交换机网段可访问该 ECS。

费用说明

  • 根据产生的指标数据量,在 Prometheus 产品中计费。无其他费用。

接入方法

步骤一:准备监控账号(如需)

Redis 6+ 推荐创建独立 ACL 监控用户;仅 requirepass / 密码认证时可只填密码、用户名留空。

ACL SETUSER exporter on ><password> -@all +@connection +memory -readonly +strlen +config|get +xinfo +pfcount -quit +zcard +type +xlen -readwrite -command +client -wait +scard +llen +hlen +arcount +get +eval +slowlog +cluster|info +cluster|slots +cluster|nodes -hello -echo +info +latency +scan -reset -auth -asking

ACL 用户需具备 INFO / CONFIG GET / CLIENT / SLOWLOG / LATENCY / MEMORY 等只读相关命令权限。Sentinel 场景另需 +sentinel|masters 等命令。

步骤二:选择接入环境

本插件支持 CS 与 ECS(VPC) 两种接入环境,工作原理不同,请按 Redis 实际部署位置选择:

CS(容器服务)

  • 将 Exporter 安装到用户指定的目标 ACK 集群,并复用该集群已有的采集器进行指标采集。

  • 观测对象为 ACK 集群。

  • 网络要求:目标 Redis 服务可在该集群网络内连通即可(例如集群内 Service,或集群能访问到的 VPC 内网地址)。

ECS(VPC)

  • 选择目标 Redis 服务部署的 ECS 机器,系统根据该 ECS 的 VPC 信息部署全托管采集器。

  • 不会在 ECS 上安装任何进程。

  • 观测对象为 ECS 实例。

  • 网络要求:托管探针所在交换机网段需允许访问目标 ECS(安全组、ACL 等需放行)。

环境

Exporter 部署位置

是否在业务机上装进程

观测对象

网络通达要求

CS

用户指定的 ACK 集群

否(部署在集群内,不占用业务 Pod 宿主)

ACK 集群

Redis 可在该集群网络内连通

ECS(VPC)

系统按 VPC 部署的全托管采集器

否,不在 ECS 上安装任何进程

ECS 实例

托管探针交换机网段可访问目标 ECS

步骤三:接入配置

  1. 登录云监控2.0控制台,选择目标工作空间后,在左侧导航栏单击 接入中心 ,单击 Redis 开始接入。

  2. 选择接入环境(CS 或 ECS(VPC)),并在下拉列表中选择 观测对象 。

  3. 接入配置,配置完成后单击 确定 :

    配置项

    是否必填

    说明

    Redis 服务路径

    是

    CS 环境填写集群内访问地址;ECS(VPC) 环境填写内网或公网访问地址。勿在地址中写入账号密码

    Redis 服务端口

    是

    默认 6379

    云厂商/部署来源

    否

    写入 provider 标签,自建为 self-hosted/redis

    网络连通性测试

    —

    仅 CS 环境提供

    Redis 用户名

    否

    Redis 6.0+ ACL 用户名;不填则等价于 default(仅密码)

    Redis 登录密码

    否

    监控账号密码

    Metric 采集间隔(秒)

    是

    默认 15

    自定义标签

    否

    注入到指标上的额外标签

    使用公网镜像地址

    否

    默认关闭;无法访问内网镜像仓库时开启

  4. 接入成功后,可在 实体探索 查看接入的实体及相关可观测数据。

数据使用说明

实体说明

接入后,云监控定期从 redis_up 等指标的标签中发现 Redis 实例,并生成中间件实体:

维度

说明

域(domain)

middleware

实体类型

middleware.redis

实体过滤条件

.entity with(domain='middleware', type='middleware.redis')

观测对象(绑定实体)

CS 环境为 acs.ack.cluster;ECS(VPC) 环境为 acs.ecs.instance

实体字段来自采集标签,与安装次数无关:

字段

说明

instance_id

实例标识,取自 target_uri 标签,格式为 host:port

provider

部署来源,如 self-hosted/redis

port

服务端口

region_id

地域

env_type

部署环境类型(CS/ECS)

cluster_id

所属集群标识

可在 实体探索 或 中间件洞察 应用中按上述字段检索实例。

内置大盘

大盘名称

查看入口

说明

Redis 概览(实例概览)

实体详情页 实例概览 页签

UModel 大盘,随实例上下文自动绑定变量

Redis 概览 / Redis Overview

Grafana 大盘列表

Grafana 大盘,提供中英文两套

核心指标

以下为实体数据集 middleware.metric.redis 的完整指标清单(共 64 个),可在实体详情、大盘与告警中直接使用:

指标名

类型

单位

显示名

说明

redis_up

gauge

-

Redis 存活

Redis/Valkey 实例是否可达且采集成功。1 表示存活,0 表示不可用。

redis_uptime

gauge

秒

运行时间

Redis 服务进程自启动以来运行的秒数。

redis_clients

gauge

-

客户端连接数

当前已连接到 Redis 的客户端连接数(不含副本连接)。

redis_blocked

gauge

-

阻塞客户端数

因 BLPOP/BRPOP/BZPOP 等阻塞命令而等待的客户端数。

redis_slaves

gauge

-

从节点数

当前已连接的副本(从节点)数量。

redis_commands_s

counter

次/秒

每秒命令数

每秒处理的命令总数。

redis_hit_rate

counter

%

缓存命中率

键空间命中率:hits / (hits + misses),以百分比表示。

redis_evicted_s

counter

次/秒

每秒淘汰键数

因达到 maxmemory 限制而被淘汰的键的速率。

redis_memory_usage

gauge

%

内存使用率

当前已用内存占 maxmemory 的百分比。

redis_used

gauge

字节

已用内存

Redis 为数据分配的字节总数(used_memory)。

redis_max

gauge

字节

最大内存

已配置的 maxmemory 上限(字节;0 表示无限制)。

redis_rss

gauge

字节

RSS 内存

RSS 内存:操作系统视角下 Redis 进程占用的常驻内存字节数。

redis_peak

gauge

字节

内存峰值

自启动以来 used_memory 的峰值。

redis_dataset

gauge

字节

数据集内存

数据集占用的字节数(不含元数据开销)。

redis_overhead

gauge

字节

内存开销

Redis 元数据与内部结构等开销占用的字节数。

redis_fragmentation

gauge

-

内存碎片率

RSS 与 used_memory 的比值;明显高于 1.5 时可能存在内存碎片。

redis_allocator_frag

gauge

-

分配器碎片率

Redis 上报的内存分配器碎片率。

redis_tracking

gauge

-

Tracking 客户端数

启用了客户端缓存 Tracking 的客户端数量。

redis_received_s

counter

次/秒

每秒新建连接数

接受的客户端新建连接速率。

redis_rejected_s

counter

次/秒

每秒拒绝连接数

因达到 maxclients 限制而被拒绝的连接速率。

redis_input

counter

字节

入站流量

每秒从网络接收的字节数。

redis_output

counter

字节

出站流量

每秒发送到网络的字节数。

redis_max_input

gauge

字节

最大输入缓冲

近期客户端输入缓冲区的最大字节数。

redis_max_output

gauge

字节

最大输出缓冲

近期客户端输出缓冲区的最大字节数。

redis_top_command_calls_sec

counter

-

Top 命令调用次数

按命令类型汇总的 Top 10 命令调用速率。

redis_command_duration_sec_by_cmd

counter

-

Top 命令耗时

按命令类型汇总的 Top 10 命令执行耗时速率(秒)。

redis_failed

counter

-

失败命令数

按命令类型汇总的失败命令调用速率。

redis_rejected

counter

-

拒绝命令数

按命令类型汇总的被拒绝命令调用速率(如 OOM)。

redis_sys

counter

-

系统 CPU

Redis 主进程每秒消耗的系统态 CPU 时间。

redis_user

counter

-

用户 CPU

Redis 主进程每秒消耗的用户态 CPU 时间。

redis_sys_children

counter

-

子进程系统 CPU

后台子进程(如 bgsave)每秒消耗的系统态 CPU 时间。

redis_user_children

counter

-

子进程用户 CPU

后台子进程每秒消耗的用户态 CPU 时间。

redis_keys_per_db

gauge

-

各 DB 键数

各逻辑数据库中的键数量。

redis_non_expiring

gauge

-

无过期键数

未设置过期时间的键数量。

redis_expiring

gauge

-

带过期键数

已设置过期时间的键数量。

redis_hits

counter

-

键空间命中

键查找成功(命中)的速率。

redis_misses

counter

-

键空间未命中

键查找失败(未命中)的速率。

redis_expired

counter

-

过期键数

因过期而被删除的键的速率。

redis_avg_ttl_per_db

gauge

秒

各 DB 平均 TTL

各库中带过期时间键的平均 TTL(秒)。

redis_rdb_bgsave_ok

gauge

-

RDB 后台保存状态

最近一次 RDB 后台保存是否成功(1 成功/0 失败)。

redis_rdb_bgsave_in_progress

gauge

-

RDB 后台保存进行中

当前是否正在执行 RDB 后台保存(1 是/0 否)。

redis_aof_enabled

gauge

-

AOF 已启用

是否启用了 AOF 持久化(1 是/0 否)。

redis_aof_bgrewrite_ok

gauge

-

AOF 重写状态

最近一次 AOF 后台重写是否成功(1 成功/0 失败)。

redis_aof_write_ok

gauge

-

AOF 写入状态

最近一次 AOF 写入是否成功(1 成功 / 0 失败)。

redis_loading

gauge

-

正在加载数据

是否正在从 dump 文件加载数据(1 是/0 否)。

redis_lag

gauge

秒

副本延迟

已连接副本相对主节点的复制延迟(秒)。

redis_master_offset

gauge

-

主库复制偏移

主节点当前的复制偏移量。

redis_slave_offset

gauge

-

从库复制偏移

本副本当前的复制偏移量。

redis_master_link_up

gauge

-

主从链路状态

副本与主节点之间的链路是否正常(1 正常/0 断开)。

redis_master_last_io_ago

gauge

秒

距上次主库 IO

距上次与主节点交互的秒数(副本视角)。

redis_changes_since_last_save

gauge

-

距上次保存变更数

自上次成功 RDB 保存以来的变更次数。

redis_last_bgsave_duration

gauge

-

上次 BGSAVE 耗时

最近一次 RDB 后台保存耗时(秒)。

redis_aof_size

gauge

字节

AOF 当前大小

当前 AOF 文件大小(字节)。

redis_channels

gauge

-

Pub/Sub 频道数

当前活跃的 Pub/Sub 频道数。

redis_patterns

gauge

-

Pub/Sub 模式数

当前活跃的 Pub/Sub 模式订阅数。

redis_pubsub_clients

gauge

-

Pub/Sub 客户端数

处于 Pub/Sub 模式的客户端数量。

redis_length

gauge

-

慢日志条数

当前慢日志中的条目数量。

redis_last_slow_duration

gauge

秒

最近慢命令耗时

慢日志中最近一条命令的执行耗时(秒)。

redis_latency_spikes

gauge

秒

延迟尖峰时长

Redis 延迟监控上报的近期延迟尖峰时长。

redis_cycles_s

gauge

次/秒

每秒事件循环次数

瞬时每秒事件循环(eventloop)次数。

redis_duration_usec

gauge

-

事件循环耗时

瞬时事件循环耗时(微秒)。

redis_error_replies_s

counter

次/秒

每秒错误回复数

返回给客户端的错误回复速率。

redis_error_replies

counter

-

按类型错误回复

按错误类型汇总的错误回复速率。

redis_last_scrape_error

gauge

-

最近采集错误

最近一次 redis_exporter 采集是否失败(1 失败/0 成功)。

除上述 MetricSet 聚合指标外,Exporter 采集的原始指标(redis_*)均写入 Prometheus 存储,可直接用 PromQL 查询。

常用查询示例

# 存活
redis_up

# 内存使用率
redis_memory_used_bytes / clamp_min(redis_memory_max_bytes, 1) * 100

# 命中率
rate(redis_keyspace_hits_total[5m])
  / clamp_min(rate(redis_keyspace_hits_total[5m]) + rate(redis_keyspace_misses_total[5m]), 1)

告警模板

本接入组件暂未内置告警规则。可在 告警中心 基于上述指标自行配置,例如对 redis_up 存活指标不等于 1、连接数 / 堆积量超阈值等场景设置告警。

存储策略说明

接入 Redis 后,云监控会创建对应的存储实例用于存储可观测数据。

数据类型

默认存储位置

备注

指标

Prometheus 实例:RegionShare:{{workspaceName}}:{{regionId}}

关联数据集 middleware.metric.redis

卸载或修改接入策略

如果期望取消或修改 Redis 的接入,可以在 接入中心 的 接入管理 页,找到对应的接入策略,进行 编辑 或 删除 。删除接入策略后,Exporter 与采集配置一并移除,已写入的历史指标按存储的生命周期策略保留。