利用shell脚本监控redis的使用内存

前些天搭建的redis集群终于在生产环境使用了,为了系统的稳定,研究了下redis的监控报警。

虽然之前搭建了RedisLive,可以实时查看redis的信息,但是做不到实时的短信报警监控。

目前只针对内存进行了监控。

监控原理:周期性的去检查redis的used_memory的量,当达到报警的阀值的时候,发短信报警。

#!/bin/sh

USEDMEMORY_77=$(redis-cli -h 192.168.119.77 info memory | grep used_memory_human: | awk -F ':' '{print $2}')
USEDMEMORY_78=$(redis-cli -h 192.168.119.78 info memory | grep used_memory_human: | awk -F ':' '{print $2}')
USEDMEMORY_76=$(redis-cli -h 192.168.119.76 -p 6379 info memory | grep used_memory_human: | awk -F ':' '{print $2}')
USEDMEMORY_117=$(redis-cli -h 192.168.119.118 -p 6379 info memory | grep used_memory_human: | awk -F ':' '{print $2}')
USEDMEMORY_118=$(redis-cli -h 192.168.119.118 -p 7379 info memory | grep used_memory_human: | awk -F ':' '{print $2}')

WARN_COUNT=1
WARM_G=3

MEM_ARR=($USEDMEMORY_77 $USEDMEMORY_78 $USEDMEMORY_76 $USEDMEMORY_117 $USEDMEMORY_118)
IP_ARR=("192.168.119.77:6379" "192.168.119.78:6379" "192.168.119.76:6379" "192.168.119.118:6379" "192.168.119.118:7379")
ARR_LENGTH=${#IP_ARR[@]}

for((i=1;i<$ARR_LENGTH;i++))
do

data=${MEM_ARR[i]}

mem_c=$(echo $data |grep 'G'|wc -l)
if [ "$mem_c" -eq "$WARN_COUNT" ]
then
mem=$(echo $data | cut -f 1 -d "G" | cut -f 1 -d ".")
if [ "$mem" -ge "$WARN_G" ]
then
vmessage="{\"mobile\":[\"134*********\"],\"content\": \"[WARN] redis内存使用量:$mem G , ,Node:${IP_ARR[i]}\"}"
echo $vmessage
/opt/monitor/udpclient "*********" "10086" "$vmessage"
fi
fi

done 

采用linux定时任务crontab 每隔1分钟执行一次脚本

*/1 * * * * root /opt/monitor/warn.sh >/opt/monitor/log/redis.log 2>&1 &

第一次写shell,花了点时间,感觉可以优化的还好多 :-) 


你可能感兴趣的:(redis)