[转帖]Redis 运维实战 第08期:监控

redis,实战,监控 · 浏览次数 : 0

小编点评

**Redis 常用监控项** **1. 连接检测连接失败检测** - 当监控组件无法连接到 Redis 实例时,触发告警。 **2. 变量检测maxmemory** - 执行 `config get maxmemory` 获取配置的最大内存,并判断是否设置或者是否合理。 - 如果内存设置过低,可能导致性能下降。 **3. 主从复制检测角色检测** - 执行 `info replication` 获取 role,如果角色有变化,则触发告警。 **4. 复制状态检测** - 在 `slave` 上执行 `info replication` 获取 `master_link_status`,判断主从是否断开,如果为 down,则触发告警。 **5. 延迟检测** - 主节点 `info replication` 的 `master_repl_offset` 和 `slave0` 字段的 offset 指标的差值,就是主从节点延迟的字节量。 **6. 吞吐量监控** - 在执行 `info stats` 命令后,可以找出以下关于吞吐量的监控项: - `total_commands_processed`:从 Redis 启动以来总计处理的命令数。 - `instantaneous_ops_per_sec`:当前 Redis 实例的 OPS。 - `total_net_input_bytes`:网络总入量。 - `total_net_output_bytes`:网络总出量。 **7. 内存监控** - `used_memory/maxmemory`:内存使用率。 - `used_memory_rss/used_memory`:内存碎片率。 **8. 持久化监控** - `rdb_last_bgsave_status`:上一次 RDB 持久化状态。 - `rdb_last_bgsave_time_sec`:上一次 RDB 持久化的持续时间。 - `aof_current_size`:AOF 文件大小。 - `keyspace_hits`、`keyspace_misses`:缓存命中率。 **9. 键监控** - `keyspace` 可以看到每个 DB 的 key 数量。 - `slowlog-log-slower-than`:慢查询监控参数 `slowlog-log-slower-than`。 - `slowlog-max-len`:慢日志长度。

正文

https://cloud.tencent.com/developer/article/1986832

 

Redis 在很多互联网公司都充当着非常核心的角色,因此,监控 Redis 以保证其稳定显得格外重要。这节内容就来聊聊 Redis 的一些常见监控项。

1 连接检测

连接失败检测:当监控组件无法连接到 Redis 实例时,则触发告警。

客户端连接数:执行 info clients 命令获取 connected_clients 就是客户端连接数。

2 变量检测

maxmemory:执行 config get maxmemory 获取配置的最大内存,判断是否有设置或者是否合理。

maxmemory-policy:执行 config get maxmemory-policy 获取配置的最大内存策略。

3 主从复制检测

角色检测:执行 info replication 获取 role,如果 role 有变化则告警。

复制状态检测:在 slave 上执行 info replication 获取 master_link_status,判断主从是否断开,如果为 down,则触发告警。

延迟检测:主节点 info replication 的 master_repl_offset 和 slave0 字段的 offset 指标的差值,就是主从节点延迟的字节量,如下图:

实例 master_repl_offset 和 slave0 字段的 offset 指标一样,因此主从没延迟。

从库是否设置只读:在 slave 上执行 info replication 获取 slave_read_only,该值默认为 1,表示从库默认只读,如果关闭只读,则告警。

4 吞吐量监控

执行完 info stats 命令后,可以找出以下关于吞吐量的监控项:

total_commands_processed:从 Redis 启动以来总计处理的命令数,可以通过前后两次监控组件获取的差值除以时间差,以得到 QPS。

instantaneous_ops_per_sec:当前 Redis 实例的 OPS。

total_net_input_bytes:网络总入量。

total_net_output_bytes:网络总出量。

instantaneous_input_kbps:每秒输入量,单位是kb/s

instantaneous_output_kbps:每秒输出量,单位是kb/s

5 内存监控

内存使用率,其计算方法为:used_memory/maxmemory,可设置内存使用率超过 80% 则告警。

used_memory 通过 info memory 获取,表示 Redis 真实使用的内存 ; maxmemory 通过 config get maxmemory 获取。

内存碎片率,其计算方法为:used_memory_rss/used_memory。大于 1 表示有内存碎片,越大表示越多;小于 1 表示正在使用虚拟内存,虚拟内存其实就是硬盘,性能会下降很多。一般内存碎片率在 1 - 1.5 之间比较健康。

两个参数均通过 info memory 获取; used_memory_rss 表示进程实际使用的物理内存大小。

缓存命中率,其计算方法为:HitRate = keyspace_hits / (keyspace_hits + keyspace_misses) ,缓存命中率低于 90% 则告警。

两个参数均通过 info stats 获取; keyspace_hits 表示 Redis 请求键被命中的次数 keyspace_misses 表示 Redis 请求键未被命中的次数

6 持久化监控

持久化可以防止数据丢失,因此对于持久化的监控,也是比较重要的。这里聊聊几个和持久化相关的监控项(相关参数均为执行完 info Persistence 的结果):

上一次 RDB 持久化状态:可以看 rdb_last_bgsave_status 的结果,如果持久化未成功,则告警。

上一次 RDB 持久化的持续时间:可以看 rdb_last_bgsave_time_sec 的结果,如果超过某个时间,则告警。

查看 AOF 文件大小:可以看 aof_current_size 的结果,如果过大,可以考虑手动触发一次 bgrewriteaof。

7 key 监控

key 数量:执行 keyspace 可以看到每个 DB 的 key 数量,对其进行监控,如果超过某个数量,则告警提示。

大 key:参考:Redis 运维实战 第06期:Bigkey

热 key:参考:Redis 运维实战 第07期:Hotkey

8 慢查询监控

因为 Redis 单线程特性,慢查询会导致其他命令阻塞,从而导致客户端出现请求超时,因此对于慢查询监控也不能少。

慢查询涉及两个参数

  • slowlog-log-slower-than:执行时间(微秒)超过了多少后,会记录在慢查询中,默认 10000 微秒
  • slowlog-max-len:慢日志的长度,当慢查询日志达到最大条数时,如果有新的慢查询,会移除最大的慢查询。

读取慢查询,可以执行 slowlog get 命令,表示显示所有的慢查询,如果执行 slowlog get 1,则表示只显示最新的一条慢查询,其输出内容如下:

每个字段解释如下: 1)唯一日志标识符 2)命令执行的时间戳 3)执行时间,单位:微妙 4)执行的命令 5)客户端 IP 和端口(4.0 及以上版本) 6)客户端名称(4.0 及以上版本)

因此对于慢查询的监控,可以每次获取最新慢查询的唯一日志标识符,如果跟上一次获取的值对比,变大了,则触发告警,提示我们有慢查询。

9 集群监控

从 cluster info 命令中可以获取集群的状态,可以对下面几项进行监控:

cluster_state 如果等于 fail,则触发告警,表示集群不能正常相应请求。

cluster_slots_fail 表示哈希槽状态为 fail 的数量,如果大于 0,则触发告警,此时可能集群节点无法提供查询服务。

cluster_known_nodes 表示集群中节点数量,如果突然减少,则触发告警。

与[转帖]Redis 运维实战 第08期:监控相似的内容:

[转帖]Redis 运维实战 第08期:监控

https://cloud.tencent.com/developer/article/1986832 Redis 在很多互联网公司都充当着非常核心的角色,因此,监控 Redis 以保证其稳定显得格外重要。这节内容就来聊聊 Redis 的一些常见监控项。 1 连接检测 连接失败检测:当监控组件无法连

[转帖]Redis 运维实战 第09期:Redis 规范

https://cloud.tencent.com/developer/article/1986835 这是专栏《Redis 运维实战》的最后一篇,感谢您的阅读。也感谢 9 篇文章的审稿人:无为,提出了多个修改建议,让文章内容更全面。 由于能力有限,系列文章难免会存在错误或者遗漏,如果您有任何建议,

[转帖]Redis 运维实战 第07期:Hotkey

https://cloud.tencent.com/developer/article/1986830 上一节,我们聊到了 Redis 的 Bigkey,这节内容我们聊聊同样需要引起重视的 Hotkey。 1 背景 Hotkey 指某个时间段访问频率比较高的键值,对应的业务比如热点话题或者热点商品。

[转帖]Redis 运维实战 第06期:Bigkey

https://cloud.tencent.com/developer/article/1986828 1 什么是 Bigkey 下面这两种情况,在很多互联网公司都被认为是 Bigkey: 字符串类型:一般认为超过 10 KB 就是 Bigkey 非字符串类型:哈希、列表、集合、有序集合,体现在元素

[转帖]Redis 运维实战 第05期:RDB 持久化

https://cloud.tencent.com/developer/article/1986826 前面一节,我们聊了 AOF,AOF 有个不足点就是:进行数据恢复时,需要逐一把日志都执行一遍,非常耗时间。 Redis 还有另外一种持久化方法:内存快照。指内存中的数据在某一时刻的状态记录,这个快

[转帖]Redis 运维实战 第04期:AOF 持久化

Redis 运维实战 第04期:AOF 持久化 https://cloud.tencent.com/developer/article/1986824 Redis 有两种持久化方式:AOF 和 RDB。本节就先来聊聊 AOF。 AOF(Append Only File) 日志是写后日志,Redis

[转帖]Redis 运维实战 第02期:Redis Cluster

https://cloud.tencent.com/developer/article/1986819 Redis 最为突出的特性就是:执行命令的速度非常快(原因是所有数据都存放在内存中)。但是单机 Redis 总会遇到瓶颈的,比如:并发、流量、内存等。在 Redis 3.0 之前,官方并没有提供集

[转帖]Redis 运维实战 第01期:Redis 复制

https://cloud.tencent.com/developer/article/1986816 作者简介 马听,多年 DBA 实战经验,对 MySQL、 Redis、ClickHouse 等数据库有一定了解,专栏《一线数据库工程师带你深入理解 MySQL》作者。 从这篇文章开始,将出几期 R

[转帖]Redis学习四(运维指南).

阅读目录 一、上线规划 二、常见运维操作 三、测试方法 回到顶部 一、上线规划 一般 redis 的参数配置都在 redis.conf 中,在上线前根据实际环境配置好合适参数,能有效提高 redis 的可用性。 redis 的运行机器 CPU 不求核数多,但求主频高,Cache大,因为 redis

[转帖]Redis大集群扩容性能优化实践

https://www.jianshu.com/p/1f5d2abbee7f 一、背景 在现网环境,一些使用Redis集群的业务随着业务量的上涨,往往需要进行节点扩容操作。 之前有了解到运维同学对一些节点数比较大的Redis集群进行扩容操作后,业务侧反映集群性能下降,具体表现在访问时延增长明显。 某