2. redis VM监控脚本

可以根据实际情况进行修改

#!/bin/bash
#redis机器资源监控
#--------
#邮件配置:
#curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
#yum -y install sendmail mailx
#vim /etc/mail.rc
#set from=alerts@etocrm.com
#set smtp=smtp.exmail.qq.com
#set smtp-auth-user=alerts@etocrm.com
#set smtp-auth-password=123456
#set smtp-auth=login
#mail -s "my.cnf" peng.wang@etocrm.com < /etc/my.cnf
#*/1 * * * * /bin/sh /tmp/redis_check.sh > /tmp/redis_check.info
 
ip=`/sbin/ip addr|grep '10\.'|awk -F'[ /]+' '{print $3}'`
dat=`date +"%Y-%m-%d %H:%M:%S"`
total_disk_size=`df -m /data/ |sed -n '2p'|awk '{print $2}'`
Avail_disk_size=`df -m /data/ |sed -n '2p'|awk '{print $4}'`
total_mem_size=`free -m|sed -n '2p'|awk '{print $2}'`
Avail_mem_size=`free -m|sed -n '2p'|awk '{print $NF}'`
#cpu=`lscpu|grep 'Core(s) per socket'|awk '{print $NF}'`
cpu=`cat /proc/cpuinfo | grep 'processor' | wc -l`
vm_uptime=`uptime|awk -F, '{print $(NF-2),$(NF-1),$NF}'|awk -F: '{print $2}'`
redis_stat=`/usr/local/bin/redis-cli ping`
redis_version=`/usr/local/bin/redis-cli --version`
redis_used_mem=`/usr/local/bin/redis-cli info memory |grep 'used_memory_human'|awk -F: '{print $2}'`
redis_max_mem=`/usr/local/bin/redis-cli info memory |grep 'maxmemory_human'|awk -F: '{print $2}'`
mem_del_key_num=`/usr/local/bin/redis-cli info |grep 'evicted_keys'|awk -F: '{print $2}'|tr -d '\r'`
disk_result=`awk -vn1=$Avail_disk_size  -vn2=$total_disk_size  'BEGIN{print (n2-n1)/n2*100}'|cut -d '.' -f1`
mem_result=`awk -vn1=$Avail_mem_size  -vn2=$total_mem_size  'BEGIN{print (n2-n1)/n2*100}'|cut -d '.' -f1`
vm_uptime1=`uptime|awk -F, '{print $(NF-2),$(NF-1),$NF}'|awk -F: '{print $2}'|awk '{print $1}'|cut -d '.' -f1`
 
echo " "
echo "> VM /data磁盘总量:$total_disk_size MB"
echo "> VM /data磁盘可用量:$Avail_disk_size MB"
echo "> 当前磁盘使用量为:${disk_result}%"
echo "> VM 内存总量:$total_mem_size MB"
echo "> VM 可用内存:$Avail_mem_size MB"
echo "> 当前内存使用量为:${mem_result}%"
echo "> VM cpu核数:$cpu"
echo "> VM 负载:$vm_uptime"
echo "> redis存活状态:$redis_stat"
echo "> redis版本:$redis_version"
echo "> redis已使用内存:$redis_used_mem"
echo "> redis可用最大内存:$redis_max_mem"
echo "> redis超过最大内存删除的key数量:$mem_del_key_num"
echo "> 机器:$ip 时间:$dat"

#磁盘监控告警
if [ $disk_result -gt 80 ]
then
    #sed -i "1i $ip" /tmp/redis_check.info
    mail -s "磁盘使用率超标" peng.wang@etocrm.com < /tmp/redis_check.info
fi
 
#内存监控告警
if [ $mem_result -gt 80 ]
then
    #sed -i "1i $ip" /tmp/redis_check.info
    mail -s "内存使用率超标" peng.wang@etocrm.com < /tmp/redis_check.info
fi

#cpu监控告警
if [ $vm_uptime1 -gt $(($cpu*2)) ]
then
    #sed -i "1i $ip" /tmp/redis_check.info
    mail -s "cpu使用率超标" peng.wang@etocrm.com < /tmp/redis_check.info
fi
 
#监控redis超过最大内存删除的key
if [ $mem_del_key_num -gt 1 ]
then
    #sed -i "1i $ip" /tmp/redis_check.info
    mail -s "redis最大内存使用超标" peng.wang@etocrm.com < /tmp/redis_check.info
fi

#监控redis存活状态
if [ $redis_stat = 'PONG' ]
then
    echo " "
else
    #sed -i "1i $ip" /tmp/redis_check.info
    mail -s "redis程序可能不存活" peng.wang@etocrm.com < /tmp/redis_check.info
fi
posted @   Enzo_Ocean  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示