redis-tool
Tools
Shell
redis-tool
Redis Cluster Daily Maintenance Tool/Redis集群日常运维工具
工具简介
redis-tool基于原生的redis-cli客户端工具来进行Redis集群的监控、配置、问题分析等运维管理,能够极大降低Redis cluster集群的运维成本。同时作为脚本化工具,下载即可用,即使对于Redis初学者,也能够快速掌握集群的运行状况,完成集群配置管理、性能问题排查,具备Redis集群的基本运维能力。
工具主要面向日常运维管理中的常见工作,提升运维效率,简化操作复杂度:
- 集群监控:能够获取集群节点的键值数、内存使用量、CPU使用率、客户端连接数、请求响应时延等信息,以表格形式输出,并给出异常告警提示
- 配置管理:可以按节点属性来统一查询或修改运行参数,并且支持对节点运行参数进行差异对比分析
- 问题分析:具备慢命令日志查询、热点key分析、TOP命令跟踪、KEY前缀统计等问题分析能力
安装部署
redis-tool工具使用shell脚本实现,下载到具有redis-cli工具的主机上即可使用(通常可部署到redis服务主机上)。
# 1. 从github下载redis-tool工具 # 方法一:使用git下载 $ git clone https://github.com/iwhalecloud-platform/redis-tool.git # 进入下载目录 $ cd redis-tool # 方法二:使用wget下载 $ wget https://github.com/iwhalecloud-platform/redis-tool/archive/refs/heads/main.zip # 解压工具包&修改目录名 $ unzip main.zip && mv redis-tool-main redis-tool # 进入下载目录 $ cd redis-tool # 2. 设置REDIS_HOME环境变量为redis-cli工具所在目录(如果PATH环境变量中包含该目录,则该步可省略) $ echo "export REDIS_HOME=/path/to/redis-cli/" >> ~/.bashrc $ source ~/.bashrc
使用帮助
直接运行redis-tool可查看到使用帮助:
$ ./redis-tool Usage: redis-tool [OPTIONS] [command] OPTIONS: -h <IP>: Redis集群中某个节点IP (默认值: 127.0.0.1). -p <port>: Redis集群中某个节点端口 (默认值: 6379). -i <nodefile>: Redis集群节点信息文件(适配codis等基于PROXY构建的集群模式). 文件格式(每行一个分片):<slots1> <MasterAddr> [SlaveAddr] [SlaveAddr] -a <password>: Redis访问密码,也可使用'REDISCLI_AUTH'环境变量来传入. -c <count>: 1. TOP10命令统计滚动展示次数(默认无限次, 'moni'使用). 2. 从Redis节点中获取的慢命令记录数(默认值: 100, 'slowlog'使用). 3. 从Redis节点中随机获取的KEY名称数量(默认值: 100000, 'keys'使用). -d <delay>: TOP10命令统计滚动展示等待间隔(单位: 秒, 默认值: 3, 'moni'使用). -t <time>: 实时命令监控跟踪运行时长(单位: 秒, 默认值: 10, 'trace'使用). -s: 只处理指定Redis节点('moni' & 'slowlog'使用). -l: TOP10命令统计滚动展示包含命令执行平均处理耗时('moni'使用). -f <file>: 1. 基于监控的命令详情文件进行命令监控跟踪处理('trace'使用). 2. 基于指定的KEY名称列表文件进行前缀统计('keys'使用). -L <level>: 按KEY前缀统计层级(默认值: 3, 'keys'使用). -H: 基于监控的命令详情文件进行热点KEY访问分析('trace'使用). -C: 基于监控的命令详情文件按客户端IP进行命令统计('trace'使用). -r: 按裸输据形式输出集群节点监控指标,便于存储或上报至第三方监控系统 ('nodes'使用). -k <key>: 要查询或修改的Redis运行参数名('config'使用). -v <value>: 要修改的Redis运行参数值('config'使用). -M: 只访问集群中主节点的运行参数 ('config'使用). -S: 只访问集群中从节点的运行参数 ('config'使用). -w: Redis节点运行参数修改后需要重写配置文件('config'使用). command: nodes: 集群节点状态监控 (默认执行) keys: 按KEY前缀层级进行统计分析 moni: TOP10命令周期性滚动统计 trace: 实时命令监控跟踪 & 热点KEY访问分析 slowlog: 集群慢命令日志查询 config: 查询/修改集群运行参数 & 集群运行参数差异检查
使用示例
注意事项:
-
请提前设置REDIS_HOME环境变量为redis-cli工具所在目录(如果
PATH
环境变量中包含该目录,可省略) - 强烈建议使用REDISCLI_AUTH环境变量来传入Redis访问密码,提升安全性
Redis集群监控
使用nodes
子命令可以汇总集群各节点的主要指标信息,并按照主从关系进行级联展示(当未指定子命令时,默认执行Redis集群监控子命令),可以针对Redis Cluster、主从Redis、自定义集群(codis、ctgcache)等形式集群的监控。
Redis Cluster集群
使用-h
和-p
参数传入集群中任一节点的IP和PORT,即可获取整个集群节点的监控指标信息:
$ ./redis-tool -h 172.16.18.80 -p 6380 nodes ================================================== 2022-04-28 18:44:02 ================================================== SERVER STATUS ROLE VERSION UPTIME(s) KEYS USEMEM %CPU CLIENTS OPS RTT(us) SLOTS ------------------------------------------------------------------------------------------------------------------------- 172.16.18.80:6379 OK master 6.2.6 120542 55 21.56M 0.2 1 2 87 0-5460 |-172.16.18.81:6380 OK slave 6.2.6 120538 55 21.56M 0.2 2 0 7702 172.16.18.81:6379 OK master 6.2.6 120542 56 21.66M 12.7 2 1317 179 5461-10922 |-172.16.18.82:6380 OK slave 6.2.6 120538 56 21.56M 0.2 2 2 424 172.16.18.82:6379 OK master 6.2.6 120542 45 21.56M 0.3 1 0 151 10923-16383 |-172.16.18.80:6380 OK slave 6.2.6 120539 45 21.57M 0.2 2 0 84 _________________________________________________________________________________________________________________________ SUM(master/all): NODE=3/6 KEY=156/312 MEM=64.8M/129.5M CLI=4/10 OPS=1319/1321 CPU=13.2/13.8 =========================================================================================================================
主从Redis
同样使用-h
和-p
参数传入主从Redis中任一节点的IP和PORT,即可获取主从节点的监控指标信息:
$ redis-tool -h 172.16.18.80 -p 7770 ================================================== 2022-10-12 12:26:54 ================================================== SERVER STATUS ROLE VERSION UPTIME(s) KEYS USEMEM %CPU CLIENTS OPS RTT(us) SLOTS ------------------------------------------------------------------------------------------------------------------------- 172.16.18.80:7770 OK master 6.2.6 251 3 1.87M 0.3 1 1 193 single-M |-172.16.18.80:7772 OK slave 6.2.6 237 3 1.85M 0.3 2 0 140 single-S |-172.16.18.80:7771 OK slave 6.2.6 243 3 1.85M 0.2 2 2 119 single-S _________________________________________________________________________________________________________________________ SUM(master/all): NODE=1/3 KEY=3/9 MEM=1.9M/5.6M CLI=1/5 OPS=1/3 CPU=0.3/0.8 =========================================================================================================================
自定义集群
使用-i
参数传入自定义Redis集群的节点信息文件(适配codis等基于PROXY构建的集群模式)
文件格式(每行一个分片):<slots1> <MasterAddr> [SlaveAddr] [SlaveAddr]
# 例如:自定义Redis集群中共有4个分片,每个分片包含1主1从节点 $ cat cluster93.conf 1...