Redis监控运维平台-CacheCloud

article/2025/10/18 17:39:39

一、CacheCloud

1、出现问题

当Redis达到一定规模,容易出现以下问题:

  1. 运维部署成本高,手动部署,容易出现错误。
  2. 实例碎片化,机器利用率较低,可能出现大量闲置资源。
  3. 监控,统计,管理不完善,配置分散,不便于发现线上问题。

2、CacheCloud

  • 如果通过平台化的工具统一监控和管理Redis,将极大的提升开发和运维人员的工作效率。CacheCloud,就是这样的一款开源的Redis管理、可视化运维平台。
  • CacheCloud是搜狐平台的一款Redis运维与管理工具,在搜狐管理上千个Redis实例,数百台机器,数百个应用,于2016年开源在GitHub上,目前Star数目为4.9k。

3、CacheCloud主要功能

  • 监控统计:提供了机器、应用、实例下各个维度数据的监控和统计界面,提高机器利用率。
  • 一键开启:Redis Standalone、Redis Sentinel、Redis Cluster三种类型的应用,无需手动配置初始化。
  • Failover:支持哨兵,集群的高可用模式。
  • 伸缩:提供完善的垂直和水平在线伸缩功能。
  • 完善运维:提供自动运维和简化运维操作功能,避免纯手工运维出错。
  • 方便的客户端:方便快捷的客户端接入。
  • 元数据管理:提供机器、应用、实例、用户信息管理。
  • 流程化:提供申请,运维,伸缩,修改等完善的处理流程。
  • 一键导入:一键导入已经存在的Redis
  • 迁移数据:Redis Standalone、Redis Sentinel、Redis Cluster、AOF、RDB。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PI4UykIr-1583896830399)(/Users/jiangxiuli/File/Typora/Redis监控运维平台—CacheCloud.assets/image-20200217144802406.png)]

4、本文思路

  1. 快速部署:快速搭建CacheCloud项目。

  2. 机器部署:实现CacheCloud对机器管理部署,修改SSH交互模式的话,需要修改源码。

  3. 接入应用:使用CacheCloud部署Redis Cluster,并完成客户端快速接入。

  4. 用户功能:站在开发人员角度介绍CacheCloud相关功能。

  5. 运维功能:站在运维人员角度介绍CacheCloud相关功能。

  6. 客户端上报:CacheCloud获取上报客户端统计信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kaiuUDLP-1583896830401)(/Users/jiangxiuli/File/Typora/Redis监控运维平台—CacheCloud.assets/image-20200217165600455.png)]

二、部署与安装

1、部署CacheCloud

CacheCloud服务端环境要求:

  • JDK 7+
  • Maven 3
  • MySQL 5.5
  • Redis 3.0+
  1. MySQL:脚本在script/cachecloud.sql目录下。

  2. CacheCloud连接MySQL,配置文件:

    cachecloud-master/cachecloud-open-web/src/main/swap/online.properties
    
  3. 编译并启动CacheCloud

    将程序进行打包:

    mvn clean compile install -Ponline
    

    运行程序,deploy.sh会将编译后的工程包,配置文件,启动脚本拷贝到/opt/cachecloud-web目录下。

    sh script/deploy.sh
    

    执行如下命令,启动CacheCloud:

    sh /opt/cachecloud-web/start.sh
    

    查看日志:

    tail -f /opt/cachecloud-web/logs/cachecloud-web.log
    

    http://ip:port/manage/login启动后,默认的用户名,密码是admin/admin。

2、机器部署

script/cachecloud-init.sh脚本,是用来初始化服务器的CacheCloud环境的,主要工作如下三个:

  • 创建SSH用户,为了能让CacheCloud与机器使用SSH协议进行交互。
  • 在指定目录下创建CacheCloud相关目录,data、conf、logs、redis,这样才可以实现对Redis的日志、持久化数据、配置文件的集中管理。
  • 机器还要在指定目录下安装release版本的Redis。

我们想要进行机器部署,只需要在目标机器上使用Root用户,执行如下脚本:

sh cachecloud-init.sh ssh_name

过程中,会要求输入ssh用户的密码。我们通过如下命令,验证Redis是否安装成功了。

redis-cli -v

3、应用接入

  • Redis Standalone、Redis Sentinel、Redis Cluster统称为应用,有一个应用id。
  • 使用CacheCloud可以快速部署Redis Standalone、Redis Sentinel、Redis Cluster。

在这里插入图片描述

4、客户端接入

两种接入方式:

  • Rest API
  • Java 客户端

在这里插入图片描述

5、本节小结

  1. 机器端做好准备工作,建立好和CacheCloud通信的基础。
  2. 在CacheCloud端填写上机器端的SSH配置,所有的机器都需要一致的,此处填写的就是机器端实际的。
  3. 在CacheCloud端添加机器,实现CacheCloud真正对机器的接管。添加的CPU和内存这是参考依据,以实际服务端探测的为主。
  4. 应用接入阶段,管理员会根据申请,选择哪些机器资源来实现应用的要求。

三、用户功能

站在开发人员角度介绍CacheCloud相关功能。

1、应用统计信息

  1. 全局信息:应用的全局信息,内存使用率,连接数,主从节点数,命中率,对象数,当前状态及分布的机器节点数。
  2. 命令统计:展示当前应用执行最频繁的5个命令的分布情况。
  3. 统计报表:展示了每分钟命令次数、命中次数、网络流量、客户端连接数、内存使用统计图。
  4. 申请扩容
  5. 申请修改配置

2、实例列表

  • 应用下,所有Redis节点的基本信息。
  • 运行状态、内存使用情况、对象数、连接数、命中率、碎片率、角色等。
  • 还有详细的信息:实例统计信息、慢查询分析、配置查询、连接信息、故障报警、命令曲线等功能,与应用统计信息很像,但是不同的是这个是实时的调用info命令获取的,而应用统计信息周期性统计后进行汇总生成的,所以会有一定的延迟。

3、应用详情

  1. 应用详情:应用ID、应用名称、应用申请人、应用类型、报警用户、负责人、Redis节点拓扑、Appkey等。
  2. 用户管理:对该用户的用户权限进行设置,添加进来的用户能有应用的访问权。
  3. 应用报警配置:CacheCloud面向用户的报警配置比较少,只有内存和连接数,相关报警主要集中在管理员层面

4、命令曲线

  • 根据命令的调用次数做倒排,展示出每个命令最近两天的调用量,可以帮助开发人员快速定位到命令执行是否正常。

5、CacheCloud Redis Shell控制台

  • 可以与Redis实例,通过命令进行交互。

6、慢查询

  • 应用下每个节点近2天的慢查询,可以选择时间,CacheCloud每隔5分钟收集所有Redis节点的慢查询保存到MySQL,这样会存在漏掉慢查询的可能性。例如Redis节点在这5分钟内产生了大量的慢查询。

7、应用拓扑

  • 实心的方块代表主节点,同一列的空心方块代表从节点。该功能方便及时发现当前集群部署结构存在的问题。CacheCloud会每隔一分钟收集应用下所有节点的info信息,将它们计算汇总后保存到MySQL中。同时CacheCloud还会对机器信息、内存、连接数、AOF重写、慢查询等做定期收集,每种收集都是在一个线程池内异步执行的,而整体的调度依赖quartz。

在这里插入图片描述

四、运维功能

  • 站在运维人员角度介绍CacheCloud相关功能。

1、应用运维

  • 应用上下线:应用下线,会将Redis节点关掉,停止应用下所有节点统计任务,将应用的状态变为下线,这样客户端获取的Redis节点列表为空。下线应用无法再次上线。超级管理员组的用户才有权限下线应用。
  • Redis Sentinel运维
  • Redis Cluster运维:主要包含如下功能:
    • 实例基本信息:运行状态、角色、内存使用状态、对象数、连接数、命中率、日志查看等。
    • 下线实例:对该节点进行Shutdown操作,并关闭该节点相关监控任务。
    • 上线实例:针对已下线的节点,重新启动该节点,并重新加入监控。
    • 添加从节点:给主节点,添加一个从节点,只需要添加对应的从节点IP即可。
    • FailOver:手动完成Redis Cluster主从节点的故障转移,其中FailOver操作支持三种方法:FailOver、FailOver Force、FailOver TakeOver。
  • 配置管理:用户提交配置修改的工单后,管理员在后台流程审批中完成配置确认和审批。
  • 垂直扩容与水平扩容:用户提交工单后,管理员审批,默认的是垂直扩容,直接修改Redis实例的MaxMemory。水平扩容需要两步,增加新的节点,迁移slots。迁移速度上migrate<set<AOF<RDB。

2、接入已存在的Redis

  1. 管理员用户命令下拉菜单中导入应用链接。
  2. 填写导入的应用表单,也就是Redis的实例列表。
  3. Redis节点最好配置MaxMemory,否则会展示不出来应用内存统计。

CacheCloud实际上对Redis节点做了如下三件事情:

  1. 验证输入内容。
  2. 保存应用信息,实例信息,应用与实例关系信息。
  3. 开启统计功能(每分钟执行一次info命令)。

3、Redis配置模板

该功能可以对每次开启的Redis节点添加配置模板。

4、迁移工具

支持以下任意的两种类型之间的切换:

  • 能够保证实时性,如果合理使用基本可以保证一致性。
  • 以可视化方式实现迁移流程控制。

在这里插入图片描述

CacheCloud迁移工具底层使用的是唯品会公司开源的redis-migrate-tool。

需要为CacheCloud添加一台机器专门用于数据迁移。

迁移工具的基本原理:

在这里插入图片描述

5、监控报警

两种方式:邮件与短信。

涉及到邮件与短信的功能:

在这里插入图片描述

监控报警的内容有:

  1. 应用日报:每天收到前一天的使用状态,包括客户端相关统计和服务端相关统计。
  2. 异常统计报警:每天,所有CacheCloud管理员会收到系统前一天的异常。
  3. Redis的实例心跳:CacheCloud每五分钟对Redis节点做心跳检测,如果检测失败,会报警。
  4. 应用内存和客户端连接数:CacheCloud每20分钟会检查Redis的内存和客户端的连接数是否超过了阈值。
  5. 机器性能报警:CacheCloud每小时对机器内存、负载、CPU进行监控,一旦超过预设的阈值,会进行报警。

6、系统配置管理

在这里插入图片描述

五、客户端上报

CacheCloud提供Java客户端上报功能,可以将信息进行可视化展示。

1、客户端上报整体设计

在这里插入图片描述

六、参考资料

  1. CacheCloud的Wiki
  2. CacheCloud的官网
  3. CacheCloud的Github

http://chatgpt.dhexx.cn/article/wDXYI0K1.shtml

相关文章

Redis入门完整教程:CacheCloud快速部署

13.2.1 CacheCloud环境需求 安装部署CacheCloud需要以下环境&#xff1a; JDK7&#xff1a;CacheCloud使用Java语言开发&#xff0c;并使用了JDK7的一些特性。 Maven3&#xff1a;CacheCloud使用Maven3作为开发构建工具。 MySQL5.5&#xff1a;CacheCloud需要Redis的相关元信息…

Redis入门完整教程:CacheCloud运维功能

13.6 运维功能 CacheCloud作为Redis的运维工具&#xff0c;包含了Redis日常运维的常用功能&#xff0c; 本节将对如下功能进行介绍&#xff1a; 1&#xff09;应用运维&#xff1a;Redis节点的上下线、手动故障转移、配置管理、扩容 等。 2&#xff09;接入已存在的Redis&…

一文解决IDEA中文乱码问题

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…

idea中中文字体设置

此次设置idea中字体为中文雅黑字体 1.找到安装的idea路径中jdr的lib文件进去 E:\IntelliJ IDEA 2019.2\jbr\lib2.创建文件名及格式为fontconfig.properties的文件 3.复制以下代码进文件 # Versionversion1# Component Font Mappingsallfonts.chinese-ms936Microsoft Yahei a…

IDEA--解决IntelliJ IDEA中文乱码问题

1.首先是编辑器的乱码&#xff0c;这个很好解决&#xff0c;file->settings->appearence里面有个Name设置成支持中文的字 体(这个很重要) 同样还要再settings中的Eidtor->File Encodings里面设置字体编码格式&#xff0c;一般都是UTF-8&#xff0c;GBK什么的也行。 2.…

彻底解决Intellij IDEA中文乱码问题

关于JAVA IDE开发工具&#xff0c;Eclipse系列和Intelli IDEA是大部分公司的主要选择&#xff0c;从开发者的选择角度&#xff0c;Intellij IDEA似乎比Eclipse系列更受欢迎一些。当我们使用Intellij IDEA开发时&#xff0c;我们发现出现中文乱码问题&#xff0c;造成中文乱码的…

彻底解决idea中文乱码问题(不易发现的点,jdk问题)

这里提出一个由于jdk问题导致的中文乱码问题。 1.Setting中的各项都设置为utf-8 2.这里设置成这样&#xff0c;极低概率是这里的问题 3.右下角设置utf-8 4.Help-Edit custom VM options后面加上Dfile.encodingUTF-8 5.idea安装目录的bin文件中两个文件idea.exe.vmoptions 和…

IDEA:IDEA中文翻译插件的安装与使用

IDEA安装中文插件 一、打开设置 二、安装插件 三、插件设置 设置自己喜欢的翻译引擎 勾选翻译文档 四、效果 鼠标光标放上去就可以查看中文文档了 Shift Ctrl O&#xff1a;可以弹出翻译框 选中要翻译的文本&#xff0c;右键选择翻译或者使用快捷键&#xff1a;Shift Ctr…

2020版的idea中文插件安装

2020版的idea中文插件安装 1. 打开idea&#xff0c;进入创建project界面 2.选择中文插件 3.搜索Chinese插件 4.重启IDE 5.重新打开就是中文界面

idea无法识别中文

开始修改idea之前&#xff0c;建议先查看自己代码的编码格式&#xff0c;用Notepad打开之后&#xff0c;点击上方编码&#xff0c;就能看到编码格式。我是因为git的原因&#xff0c;导致拉下来的代码是默认编码&#xff0c;一个文件一个格式。修改git编码的方法自行百度。 在解…

IDEA更改中文字体

初始&#xff1a; 效果&#xff1a; 更改&#xff1a;file-settings&#xff0c;左侧搜索框中直接输入font&#xff0c;然后如下图&#xff0c;将字体改为SimHei&#xff0c;应用保存即可

IDEA中文乱码五种解决方法

1.IDEA安装目录找到 打开文件&#xff0c;末尾添加-Dfile.encodingUTF-8 2.IDEA设置 3.设置VM options为-Dfile.encodingUTF-8 4.打开在末尾添加-Dfile.encodingUTF-8 5.在.idea的文件夹里面有个encodings.xml 的文件&#xff0c;除了UTF-8 的都删了

Mac如何设置intellij idea中文

1、点击菜单栏的「IntelliJ IDEA」&#xff0c;再点击「Preferences…」打开软件的偏好设置 2、点击左侧导航的「Plugins」&#xff0c;在右侧的「Type / to see options」处输入「chinese」,找到「Chinese (Simplified) Language」点击「Install」 3、安装完成后点击「Restart…

解决IDEA中文字体大小不一

具体问题&#xff1a;中文显示不正常 问题原因&#xff1a; idea中的默认字体Consolas中没有中文字体&#xff0c;与IDEA版本有关&#xff0c;比如IDEA2019.2就容易出现这个问题。 解决方法&#xff1a; 依次点击 File > settings > Editor > Font 中…

idea中文显示乱码解决

中文乱码问题分类&#xff1a; 编码普通中文乱码properties文件中文乱码console控制台中文乱码搜索框中文乱码svn注释中文乱码问题截图&#xff1a; 2、properties文件中文乱码 4,、搜索框中文乱码 5、svn注释中文乱码 解决方法&#xff1a; 1、编码普通中文乱码 ①set…

IDEA中文切换回英文

如果使用IDEA插件进行汉化&#xff0c;切换回英文只需要把插件关闭即可。 可在文件->设置->插件->已安装&#xff0c;去除对勾然后重启就完成啦

关于IDEA中文乱码的解决办法

先说我遇到的问题&#xff0c;我在部署tomcat9时控制台System.out.println(“中文”)时乱码--------- 1.–> log4j的logger.info()控制台打印乱码 和 system.out.println()控制台打印乱码 解决方法为 配置Tomcat VM options值为&#xff1a;-Dfile.encodingUTF-8 但是 这是…

IDEA中文乱码解决

文章目录 1 现象2 排查方案2.1 项目设置2.2 文件设置2.3 应用配置2.4 IDEA配置2.5 运行配置2.6 其他 1 现象 我这里出现的现象是这样的 2 排查方案 2.1 项目设置 File-Settings-Editor-File Encodings 需要设置为UTF-8 2.2 文件设置 排查右下角的当前文件是否有问题 设…

IntelliJ IDEA中文插件

IntelliJ IDEA 官方发布了中文插件 Preferences -> plugins -> Marketplace -> 搜索 Chinese 就可以搜到了 早在7月21日就正式发布&#xff0c;发现很多同学还不知道&#xff0c;是官方插件了&#xff0c;在插件库就可以下载 发现虽然英文不怎么好&#xff0c;用惯…

idea中文转英文插件

插件介绍&#xff1a; Translation——用于IDEA内部英汉互译的插件 Translation - IntelliJ IDEs Plugin | Marketplace 插件快捷键命令&#xff1a;