1. 程式人生 > >利用shell指令碼監控redis的使用記憶體

利用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,花了點時間,感覺可以優化的還好多 :-)