大家好,我是不才陈某~,文末送红包

我们在应用 Redis 时,经常会面临的运维工作,包括 Redis 的运行状态监控,数据迁移,主从集群、切片集群的部署和运维。

接下来,我就从这三个方面,给你介绍一些工具。我们先来学习下监控 Redis 实时运行状态的工具,这些工具都用到了 Redis 提供的一个监控命令:INFO。

最基本的监控命令:INFO 命令

Redis 本身提供的 INFO 命令会返回丰富的实例运行监控信息,这个命令是 Redis 监控工具的基础。

INFO 命令在使用时,可以带一个参数 section,这个参数的取值有好几种,相应的,INFO 命令也会返回不同类型的监控信息。我把 INFO 命令的返回信息分成 5 大类,其中,有的类别当中又包含了不同的监控内容,如下表所示:

在监控 Redis 运行状态时,INFO 命令返回的结果非常有用。如果你想了解 INFO 命令的所有参数返回结果的详细含义,可以查看 Redis官网的介绍。

这里,我给你提几个运维时需要重点关注的参数以及它们的重要返回结果。

首先,无论你是运行单实例或是集群,我建议你重点关注一下 stat、commandstat、cpu 和 memory 这四个参数的返回结果,这里面包含了命令的执行情况(比如命令的执行次数和执行时间、命令使用的 CPU 资源),内存资源的使用情况(比如内存已使用量、内存碎片率),CPU 资源使用情况等,这可以帮助我们判断实例的运行状态和资源消耗情况。

另外,当你启用 RDB 或 AOF 功能时,你就需要重点关注下 persistence 参数的返回结果,你可以通过它查看到 RDB 或者 AOF 的执行情况。

如果你在使用主从集群,就要重点关注下 replication 参数的返回结果,这里面包含了主从同步的实时状态。

不过,INFO 命令只是提供了文本形式的监控结果,并没有可视化,所以,在实际应用中,我们还可以使用一些第三方开源工具,将 INFO 命令的返回结果可视化。接下来,我要讲的 Prometheus,就可以通过插件将 Redis 的统计结果可视化。

面向 Prometheus 的 Redis-exporter 监控

Prometheus是一套开源的系统监控报警框架。它的核心功能是从被监控系统中拉取监控数据,结合Grafana工具,进行可视化展示。

而且,监控数据可以保存到时序数据库中,以便运维人员进行历史查询。同时,Prometheus 会检测系统的监控指标是否超过了预设的阈值,一旦超过阈值,Prometheus 就会触发报警。

对于系统的日常运维管理来说,这些功能是非常重要的。而 Prometheus 已经实现了使用这些功能的工具框架。我们只要能从被监控系统中获取到监控数据,就可以用 Prometheus 来实现运维监控。

Prometheus 正好提供了插件功能来实现对一个系统的监控,我们把插件称为 exporter,每一个 exporter 实际是一个采集监控数据的组件。exporter 采集的数据格式符合 Prometheus 的要求,Prometheus 获取这些数据后,就可以进行展示和保存了。

Redis-exporter就是用来监控 Redis 的,它将 INFO 命令监控到的运行状态和各种统计信息提供给 Prometheus,从而进行可视化展示和报警设置。目前,Redis-exporter 可以支持 Redis 2.0 至 6.0 版本,适用范围比较广。

除了获取 Redis 实例的运行状态,Redis-exporter 还可以监控键值对的大小和集合类型数据的元素个数,这个可以在运行 Redis-exporter 时,使用 check-keys 的命令行选项来实现。

此外,我们可以开发一个 Lua 脚本,定制化采集所需监控的数据。然后,我们使用 scripts 命令行选项,让 Redis-exporter 运行这个特定的脚本,从而可以满足业务层的多样化监控需求。

最后,我还想再给你分享两个小工具:redis-stat和Redis Live。跟 Redis-exporter 相比,这两个都是轻量级的监控工具。它们分别是用 Ruby 和 Python 开发的,也是将 INFO 命令提供的实例运行状态信息可视化展示。

虽然这两个工具目前已经很少更新了,不过,如果你想自行开发 Redis 监控工具,它们都是不错的参考。

除了监控 Redis 的运行状态,还有一个常见的运维任务就是数据迁移。接下来,我们再来学习下数据迁移的工具。

数据迁移工具 Redis-shake

有时候,我们需要在不同的实例间迁移数据。目前,比较常用的一个数据迁移工具是Redis-shake,这是阿里云 Redis 和 MongoDB 团队开发的一个用于 Redis 数据同步的工具。

Redis-shake 的基本运行原理,是先启动 Redis-shake 进程,这个进程模拟了一个 Redis 实例。

然后,Redis-shake 进程和数据迁出的源实例进行数据的全量同步。

这个过程和 Redis 主从实例的全量同步是类似的。

源实例相当于主库,Redis-shake 相当于从库,源实例先把 RDB 文件传输给 Redis-shake,Redis-shake 会把 RDB 文件发送给目的实例。接着,源实例会再把增量命令发送给 Redis-shake,Redis-shake 负责把这些增量命令再同步给目的实例。

下面这张图展示了 Redis-shake 进行数据迁移的过程:

Redis-shake 的一大优势,就是支持多种类型的迁移。

首先,它既支持单个实例间的数据迁移,也支持集群到集群间的数据迁移。

其次,有的 Redis 切片集群(例如 Codis)会使用 proxy 接收请求操作,Redis-shake 也同样支持和 proxy 进行数据迁移。

另外,因为 Redis-shake 是阿里云团队开发的,所以,除了支持开源的 Redis 版本以外,Redis-shake 还支持云下的 Redis 实例和云上的 Redis 实例进行迁移,可以帮助我们实现 Redis 服务上云的目标。

在数据迁移后,我们通常需要对比源实例和目的实例中的数据是否一致。如果有不一致的数据,我们需要把它们找出来,从目的实例中剔除,或者是再次迁移这些不一致的数据。

这里,我就要再给你介绍一个数据一致性比对的工具了,就是阿里云团队开发的Redis-full-check。

Redis-full-check 的工作原理很简单,就是对源实例和目的实例中的数据进行全量比对,从而完成数据校验。不过,为了降低数据校验的比对开销,Redis-full-check 采用了多轮比较的方法。

在第一轮校验时,Redis-full-check 会找出在源实例上的所有 key,然后从源实例和目的实例中把相应的值也都查找出来,进行比对。第一次比对后,Redis-full-check 会把目的实例中和源实例不一致的数据,记录到 sqlite 数据库中。

从第二轮校验开始,Redis-full-check 只比较上一轮结束后记录在数据库中的不一致的数据。

为了避免对实例的正常请求处理造成影响,Redis-full-check 在每一轮比对结束后,会暂停一段时间。随着 Redis-shake 增量同步的进行,源实例和目的实例中的不一致数据也会逐步减少,所以,我们校验比对的轮数不用很多。

我们可以自己设置比对的轮数。具体的方法是,在运行 Redis-full-check 命令时,把参数 comparetimes 的值设置为我们想要比对的轮数。

等到所有轮数都比对完成后,数据库中记录的数据就是源实例和目的实例最终的差异结果了。

这里有个地方需要注意下,Redis-full-check 提供了三种比对模式,我们可以通过 comparemode 参数进行设置。comparemode 参数有三种取值,含义如下:

  • KeyOutline,只对比 key 值是否相等;

  • ValueOutline,只对比 value 值的长度是否相等;

  • FullValue,对比 key 值、value 长度、value 值是否相等。

我们在应用 Redis-full-check 时,可以根据业务对数据一致性程度的要求,选择相应的比对模式。如果一致性要求高,就把 comparemode 参数设置为 FullValue。

好了,最后,我再向你介绍一个用于 Redis 集群运维管理的工具 CacheCloud。

集群管理工具 CacheCloud

CacheCloud是搜狐开发的一个面向 Redis 运维管理的云平台,它实现了主从集群、哨兵集群和 Redis Cluster 的自动部署和管理,用户可以直接在平台的管理界面上进行操作。

针对常见的集群运维需求,CacheCloud 提供了 5 个运维操作。

  • 下线实例:关闭实例以及实例相关的监控任务。

  • 上线实例:重新启动已下线的实例,并进行监控。

  • 添加从节点:在主从集群中给主节点添加一个从节点。

  • 故障切换:手动完成 Redis Cluster 主从节点的故障转移。

  • 配置管理:用户提交配置修改的工单后,管理员进行审核,并完成配置修改。

当然,作为运维管理平台,CacheCloud 除了提供运维操作以外,还提供了丰富的监控信息。

CacheCloud 不仅会收集 INFO 命令提供的实例实时运行状态信息,进行可视化展示,而且还会把实例运行状态信息保存下来,例如内存使用情况、客户端连接数、键值对数据量。这样一来,当 Redis 运行发生问题时,运维人员可以查询保存的历史记录,并结合当时的运行状态信息进行分析。

如果你希望有一个统一平台,把 Redis 实例管理相关的任务集中托管起来,CacheCloud 是一个不错的工具。

红包

今天支付宝发红包了,好多朋友都领到3块以上的,有些朋友甚至领取了十几块的。

推荐阅读(求关注,别白嫖!)

  1. 使用 查询分离 后 从20s优化到500ms

  2. 数据异构就该这样做,yyds~

  3. 实战干货!Spring Cloud Gateway 整合 OAuth2.0 实现分布式统一认证授权!

  4. 从实现原理来讲,Nacos 为什么这么强?

  5. 阿里限流神器Sentinel夺命连环 17 问?

  6. openFeign夺命连环9问,这谁受得了?

  7. Spring Cloud Gateway夺命连环10问?

玩转Redis必备的几款运维工具,好用爆了~相关推荐

  1. Ansible_SaltStack_BatchShell三款运维软件对比

    三款自动化软件总体功能对比 项目 SaltStack Ansible BatchShell 开发语言 Python Python Java 是否有客户端 有 无 有 是否支持二次开发 支持 支持 支持 ...

  2. 【安全运维】小微企业的安全运维工具用哪款好?

    即使是小微企业,也同样面临着安全运维的困扰,同样面临着数据泄露.资产难管理的问题,因此选择一款合适的安全运维工具是非常必要的.那你知道小微企业的安全运维工具用哪款好? 小微企业的安全运维工具用哪款好? ...

  3. 创业公司必备的5款团队协作工具

    现在的企业级应用如火如荼,一时间内各个巨头或者创业者都推出了自己家的OA系统.那么这些协同办公软件真的适合所有公司吗?我看未必.企业千千万,每一种 企业对协同办公软件的要求都是不一样的,市面上的OA并 ...

  4. python开发web运维工具_Python web 开发工具箱

    工欲善其事,必先利其器(装逼工具)Pycharm.专业的python IDE,功能很强大,特别喜欢它的代码merge工具,不想被编辑器折腾死的推荐直接使用,五星级推荐.(除了内存占用大点) vim.本 ...

  5. IT运维面试问题总结-运维工具、开源应用(Ansible、Ceph、Docker、Apache、Nginx等)

    1.简述Ansible及其优势? Ansible是一款极其简单的开源的自动化运维工具,基于Python开发,集合了众多运维工具(puppet, cfengine, chef, func, fabric ...

  6. 运维工具大宝典之商用软件篇

    在前一篇<运维工具大宝典之开源工具篇>中,云智慧对比分析了国内流行开源运维监控软件的优劣.在文末我们提到了开源产品在服务和安全等方面的短板,而正因为有这些问题,所以国内企业,特别是中大型行 ...

  7. linux运维人员必会运维工具

    linux运维人员必会开源运维工具体系 说明:不同的技术人员,不同的阶段确定知识边界非常重要,否则,就像马拉车,不知道终点在哪,累死也达不到目标.例如拿8K要学多少,拿15K要学多少.一个新手也许只想 ...

  8. 简单介绍自动化运维工具clip

    Clip是一款自动化运维工具,适用于海量服务器的管理场景,可以降低系统误操作风险,提高工作效率等.Clip将传统的IP管理纬度替换为String管理纬度,管理方式的改变使海量运维时更加的便捷.可靠与高 ...

  9. Ansible自动化运维工具使用

    概述 本文描述自动化运维工具 Ansible 的安装及基础使用方法,包含: Centos 下的安装 主机配置 Ad-Hoc command(命令行执行) Playbook (任务剧本) Ansible ...

最新文章

  1. mysql getconnection 如何关闭连接_【MySQL】使用连接池获取Connection执行sql以及mybatis事务注意事项...
  2. 算法与数据结构重点归纳
  3. java无效的源发行版_无效的Java
  4. 【HihoCoder - 1502】最大子矩阵(二维前缀和,尺取)
  5. oracle12178错误,Oracle学习笔记_20080522:Index FS vs Index FFS
  6. 【转】Go Micro(2)——微服务工具箱
  7. nginx 负载均衡 404_Nginx+.Net Core实现项目负载均衡
  8. 6.4 随机森林实战
  9. python matplotlib画图实例
  10. 联想y50更换固态硬盘_联想y50怎么加固态硬盘而不换原来的机器硬盘?
  11. CMAKE Opencv配置
  12. php蓝牙连接不上,蓝牙音响连接不上手机怎么办 两种方法轻松解决连接问题
  13. 计算机利弊英语作文带翻译,电脑的弊英语作文带翻译
  14. 小孩孩子应用题计算机错误,为什么一二年级的孩子数学应用题总出错?家长该怎么办?...
  15. 用canvas写 看你有多色 游戏
  16. 树莓派Pico开发板与大功率MOSFET/IGBT器件驱动控制24V直流电机技术实践
  17. 函数的概念三要素参数返回值好处递归
  18. PTA寒假基础题训练(含解题思路)(下)
  19. 2020年G3(电站锅炉)考试题及G3(电站锅炉)考试报名
  20. 【教学案例】Baxter应用于工程专业新生教学的实践赏析

热门文章

  1. 如何用github搭建图床(亲测有效)
  2. iCopy和fclone和TG-bot构建gd转存保姆教程
  3. 人工智能与深度学习概述
  4. 51C 一个led闪烁
  5. 河海大学计算机科学培养方案,计算机科学与技术专业本科培养方案-河海大学计算机与信息学院.PDF...
  6. Linux 如何给予普通用户使用管理员权限操作
  7. Repeaterd的使用,获取选中行的id,ItemDataBound和ItemCommand事件的使用
  8. win8修改炉石服务器,炉石传说:新的炸服者出现了,这套操作下来就可以成功让炉石服务器成功崩溃...
  9. JdbcTemplate 无效的列类型 UncategorizedSQLException
  10. 32位软件 可以装在64位上吗