利用shell指令碼監控redis的使用記憶體
阿新 • • 發佈:2018-12-25
前些天搭建的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,花了點時間,感覺可以優化的還好多 :-)