本文主要是介绍Redis一键巡检脚本,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
今日分享redis一键巡检脚本,适用于单机、主从和cluster集群。大家有需要的可以先在本地测试,确认没问题后再运行于生产环境。
#!/bin/bash# 检查是否安装了redis-cli工具,如果没有安装,则提示安装if ! command -v redis-cli &> /dev/nullthenecho "redis-cli could not be found, please install it first."exit 1fi# 设置你的Redis地址和端口,如果没有安装,则提示安装REDIS_HOST="127.0.0.1"REDIS_PORT=6379# 登录的密码,如果没有设置密码,这一行可以注释掉REDIS_PASSWORD="123456"function check_redis() {
#这是核心函数,它接受主机、端口和密码作为参数并执行检查local HOST=$1local PORT=$2local PASSWORD=$3# 执行INFO命令,获取Redis状态信息if [ -z "$PASSWORD" ]; thenREDIS_INFO=$(redis-cli -h $HOST -p $PORT INFO)elseREDIS_INFO=$(redis-cli -h $HOST -p $PORT -a $PASSWORD INFO)fiecho "Checking Redis on $HOST:$PORT"# 打印内存使用情况MEMORY_USED=$(echo "$REDIS_INFO" | grep "used_memory_human" | cut -d':' -f2)echo "Memory Used: $MEMORY_USED"# 打印连接数TOTAL_CONNECTIONS=$(echo "$REDIS_INFO" | grep "total_connections_received" | cut -d':' -f2)echo "Total Connections Received: $TOTAL_CONNECTIONS"# 打印当前连接数CURRENT_CONNECTIONS=$(echo "$REDIS_INFO" | grep "connected_clients" | cut -d':' -f2)echo "Currently Connected Clients: $CURRENT_CONNECTIONS"# 打印Key数量TOTAL_KEYS=$(redis-cli -h $HOST -p $PORT -a $PASSWORD DBSIZE)echo "Total Keys: $TOTAL_KEYS"# 打印角色,判断是否为主从结构或集群ROLE=$(echo "$REDIS_INFO" | grep "role" | cut -d':' -f2)echo "Role: $ROLE"if [ "$ROLE" = "master" ]; thenecho "This is a master instance."# 打印已连接的从节点数量以及信息CONNECTED_SLAVES=$(echo "$REDIS_INFO" | grep "connected_slaves" | cut -d':' -f2)echo "Connected Slaves: $CONNECTED_SLAVES"for i in $(seq 0 $(($CONNECTED_SLAVES - 1)))doSLAVE_INFO=$(echo "$REDIS_INFO" | grep "^slave${i}:")echo "Slave ${i}: $SLAVE_INFO"doneelif [ "$ROLE" = "slave" ]; thenecho "This is a slave instance."# 打印主节点的信息MASTER_HOST=$(echo "$REDIS_INFO" | grep "master_host" | cut -d':' -f2)MASTER_PORT=$(echo "$REDIS_INFO" | grep "master_port" | cut -d':' -f2)echo "Connected to Master: $MASTER_HOST:$MASTER_PORT"fiecho "-----------------------------------------"}# 单机模式巡检check_redis $REDIS_HOST $REDIS_PORT $REDIS_PASSWORD# 如果有多个Redis实例(如主从结构或集群模式),可以增加相应的IP和端口# 如:check_redis "192.168.1.1" 6380 "yourpassword"# 集群模式巡检,通过集群节点遍历# 获取集群节点列表CLUSTER_NODES=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -a $REDIS_PASSWORD CLUSTER NODES | awk '{print $2}' | awk -F@ '{print $1}')for NODE in $CLUSTER_NODES; doNODE_IP=$(echo $NODE | cut -d':' -f1)NODE_PORT=$(echo $NODE | cut -d':' -f2)check_redis $NODE_IP $NODE_PORT $REDIS_PASSWORDdone
脚本说明:
- 检查redis-cli工具是否安装:如果没有安装,则提示安装。
- 基本配置:你需要设置Redis的地址、端口以及密码(如果有的话)。
- 函数check_redis:这是核心函数,它接受主机、端口和密码作为参数并执行检查。
- 内存使用、连接数、key数量检查:通过redis-cli INFO命令提取相关信息。
- 区分单机、主从、集群:通过检查role字段来判断Redis的角色,并针对不同的角色执行相应的操作。
- 单机模式巡检:对单个Redis实例执行检查。
- 集群模式巡检:遍历所有集群节点进行检查。
这篇关于Redis一键巡检脚本的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!