INFO命令在使用时,可以带一个参数section,这个参数的取值有好几种,相应的INFO命令也会返回不同类型的监控信息;首先无论是运行单实例或是集群建议重点关注一下stat、commandstat、cpu和memory这四个参数的返回结果,这里面包含了命令的执行情况(比如命令的执行次数和执行时间、命令使用的CPU资源),内存资源的使用情况(比如内存已使用量、内存碎片率),CPU资源使用情况等,这可以判断实例的运行状态和资源消耗情况;另外当启用RDB或AOF功能时,需要重点关注persistence参数的返回结果,可以通过它查看到RDB或者AOF的执行情况;如果在使用主从集群,就要重点关注下replication参数的返回结果,里面包含了主从同步的实时状态;不过INFO命令只是提供了文本形式的监控结果,并没有可视化;
Redis-exporter就是用来监控Redis的,它将INFO命令监控到的运行状态和各种统计信息提供给Prometheus,从而进行可视化展示和报警设置;除了获取Redis实例的运行状态,Redis-exporter还可以监控键值对的大小和集合类型数据的元素个数,这个可以在运行Redis-exporter时使用check-keys的命令行选项来实现;此外可以开发一个Lua脚本,定制化采集所需监控的数;使用scripts命令行选项,让Redis-exporter运行这个特定的脚本,从而可以满足业务层的多样化监控需求;
redis-shake的基本运行原理,是先启动Redis-shake进程,这个进程模拟了一个Redis实例。然后Redis-shake进程和数据迁出的源实例进行数据的全量同步。这个过程和Redis主从实例的全量同步是类似的。源实例相当于主库,Redis-shake相当于从库,源实例先把RDB文件传输给Redis-shake,Redis-shake会把RDB文件发送给目的实例。接着,源实例会再把增量命令发送给Redis-shake,Redis-shake负责把这些增量命令再同步给目的实例;
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的值设置为想要比对的轮数,等到所有轮数都比对完成后,数据库中记录的数据就是源实例和目的实例最终的差异结果了;
针对常见的集群运维需求,CacheCloud提供了5个运维操作:
当然,作为运维管理平台,CacheCloud除了提供运维操作以外,还提供了丰富的监控信息,CacheCloud不仅会收集INFO命令提供的实例实时运行状态信息,进行可视化展示,而且还会把实例运行状态信息保存下来,例如内存使用情况、客户端连接数、键值对数据量;