本文介绍如何将自建 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 监控用户;仅 |
|
网络连通 |
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 |
步骤三:接入配置
-
登录云监控2.0控制台,选择目标工作空间后,在左侧导航栏单击 接入中心 ,单击 Redis 开始接入。
-
选择接入环境(CS 或 ECS(VPC)),并在下拉列表中选择 观测对象 。
-
接入配置,配置完成后单击 确定 :
配置项
是否必填
说明
Redis 服务路径
是
CS 环境填写集群内访问地址;ECS(VPC) 环境填写内网或公网访问地址。勿在地址中写入账号密码
Redis 服务端口
是
默认 6379
云厂商/部署来源
否
写入
provider标签,自建为self-hosted/redis网络连通性测试
—
仅 CS 环境提供
Redis 用户名
否
Redis 6.0+ ACL 用户名;不填则等价于 default(仅密码)
Redis 登录密码
否
监控账号密码
Metric 采集间隔(秒)
是
默认 15
自定义标签
否
注入到指标上的额外标签
使用公网镜像地址
否
默认关闭;无法访问内网镜像仓库时开启
-
接入成功后,可在 实体探索 查看接入的实体及相关可观测数据。
数据使用说明
实体说明
接入后,云监控定期从 redis_up 等指标的标签中发现 Redis 实例,并生成中间件实体:
|
维度 |
说明 |
|
域(domain) |
middleware |
|
实体类型 |
middleware.redis |
|
实体过滤条件 |
|
|
观测对象(绑定实体) |
CS 环境为 |
实体字段来自采集标签,与安装次数无关:
|
字段 |
说明 |
|
instance_id |
实例标识,取自 |
|
provider |
部署来源,如 |
|
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}} |
关联数据集 |
卸载或修改接入策略
如果期望取消或修改 Redis 的接入,可以在 接入中心 的 接入管理 页,找到对应的接入策略,进行 编辑 或 删除 。删除接入策略后,Exporter 与采集配置一并移除,已写入的历史指标按存储的生命周期策略保留。