简单监测服务器的shell脚本
发布时间:2020-12-15 16:17:01 所属栏目:安全 来源:网络整理
导读:1、编写shell脚本如下: #!/bin/bash# chkconfig: 2345 10 90 # description:监测linux服务器cpu、内存、磁盘#cpu平均负载阀值CPU_AVERAGE_LOAD=0.7#剩余的最少警告的阀值MIN_WARNING=20#超过最多警告的阀值MAX_WARNING=90#监测cpu负载monitor_cpu(){ #十五分
1、编写shell脚本如下:
#!/bin/bash # chkconfig: 2345 10 90 # description:监测linux服务器cpu、内存、磁盘 #cpu平均负载阀值 CPU_AVERAGE_LOAD=0.7 #剩余的最少警告的阀值 MIN_WARNING=20 #超过最多警告的阀值 MAX_WARNING=90 #监测cpu负载 monitor_cpu(){ #十五分钟平均负载值 load_quarter=`uptime | awk '{print $NF}'` #cpu内核数 cpu_num=`grep -c 'model name' /proc/cpuinfo` #cpu最大负载 cpu_load=${cpu_num} #报警的负载阀值 warning=$(echo ${cpu_load} * ${CPU_AVERAGE_LOAD}|bc) if [ $(echo "${load_quarter} >= ${warning} "|bc) == 1 ] then #报警 warn 'cpu负载较大,请尽快处理' fi #监测cpu空闲比 cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $8}' |cut -f 1 -d .` if [ ${cpu_idle} -lt ${MIN_WARNING} ] then warn 'cpu占用较高请尽快处理' fi } #监测内存 monitor_memory(){ #总的内存 total=`free -m |grep 'Mem'|awk '{print $2}' ` #可用的内存 available=`free -m |grep 'Mem'|awk '{print $NF}'` #可用内存所占比例 rate=$(echo "scale=2;${available} / ${total} * 100"|bc) if [ $(echo "${rate} <= ${MIN_WARNING}"|bc) == 1 ] then warn '内存占用较大,请尽快处理' fi #监测Swap swap_total=`free -m|grep 'Swap'|awk '{print$2}'` swap_free=`free -m|grep 'Swap'|awk '{print$4}'` if [ ${swap_total} -gt 0 ] then swap_rate=$(echo "scale=2;${$swap_free} / ${swap_total}"|bc) if [ $(echo "${swap_rate} <= ${MIN_WARNING}"|bc) == 1 ] then warn '内存Swap剩余较少,请尽快处理' fi fi } #监测磁盘 monitor_disk(){ #过滤第一行 for i in `df -h |grep / |awk 'BEGIN {print 0} {print $5} END{print 0}'|cut -f 1 -d '%'` do if [ $(echo "${i} >= ${MAX_WARNING}"|bc) == 1 ] then warn '磁盘即将用完,请尽快处理' break fi done } #报警,发送邮件 warn(){ #发邮件 printf "`date +%Y%m%d%H%M%S`: `/usr/local/php5/bin/php /var/www/html/tools/phpmailer/wangyi.php ${1}` n" >> /var/log/monitorlog 2>&1 } #执行方法 monitor_cpu monitor_memory monitor_disk 2、配置每小时执行一次 0 */1 * * * /var/www/shell/monitor (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |