前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 运维实战 第08期:监控

Redis 运维实战 第08期:监控

作者头像
数据库交流
发布2022-04-25 08:31:38
5720
发布2022-04-25 08:31:38
举报
文章被收录于专栏:悦专栏悦专栏

今天是 1024 程序员节,祝各位节日快乐。

这篇文章我们聊聊 Redis 运维实战系列第 8 期--Redis 监控。

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 运维实战》系列文章推荐

Redis 运维实战 第01期:Redis 复制

Redis 运维实战 第02期:Redis Cluster

Redis 运维实战 第03期:Codis

Redis 运维实战 第04期:AOF 持久化

Redis 运维实战 第05期:RDB 持久化

Redis 运维实战 第06期:Bigkey

Redis 运维实战 第07期:Hotkey

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 悦专栏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 连接检测
  • 2 变量检测
  • 3 主从复制检测
  • 4 吞吐量监控
  • 5 内存监控
  • 6 持久化监控
  • 7 key 监控
  • 8 慢查询监控
  • 9 集群监控
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档