1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > shell脚本监控系统负载 CPU和内存使用情况

shell脚本监控系统负载 CPU和内存使用情况

时间:2022-04-30 15:01:38

相关推荐

shell脚本监控系统负载 CPU和内存使用情况

#一.编写系统负载监控的脚本文件

#!/bin/bash

########################################################################

#This scripts is checking the system load,vision 0.1

#Author:HeJunyi

#E-mail:158****4484@

########################################################################

#使用uptime命令监控linux系统负载变化

#提取本服务器的IP地址信息

IP=`ifconfig eth1 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`

#抓取cpu的总核数

cpu_num=`grep -c 'model name' /proc/cpuinfo`

#抓取当前系统15分钟的平均负载值

load_15=`uptime | awk '{print $NF}'`

#计算当前系统单个核心15分钟的平均负载值,结果小于1.0时前面个位数补0。

average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc` ##scale表示小数精度位数

#取上面平均负载值的个位整数

average_int=`echo $average_load | cut -f 1 -d "."`

#设置系统单个核心15分钟的平均负载的告警值为0.70(即使用超过70%的时候告警)。

load_warn=0.70

#当单个核心15分钟的平均负载值大于等于1.0(即average_int个位整数大于0);如果小于1.0则进行二次比较

if (($average_int > 0)); then

echo "$IP服务器15min平均负载达到$average_load,超过警戒值1.0,请立即处理!"

else

#当前系统15分钟平均负载值与告警值进行比较(当大于成立会返回1,小于时会返回0 )

load_now=`expr $average_load \> $load_warn`

#如果系统单个核心15分钟的平均负载值大于告警值0.70(返回值为1),则发邮件给管理员

if (($load_now == 1)); then

echo "$IP服务器15min平均负载达到$average_load,超过警戒值0.00,请及时处理"

fi

fi

二、监控系统cpu的情况

#!/bin/bash

########################################################################

#This scripts is checking the cpu,vision 0.1

#Author:HeJunyi

#E-mail:158****4484@

########################################################################

#提取本服务器的IP地址信息

IP=`ifconfig eth1|grep "inet addr"|awk '{print $2}'|cut -f2 -d":"`

#取当前空闲cpu百份比值

cpu_id=`top -b -n1|grep "Cpu"|awk '{print $5}'|cut -f1 -d"%"`

#取当前空闲cpu百份比值的整数部分

cpu_int=`echo $cpu_id|cut -f1 -d"."`

#设置空闲cpu的告警值为20%(即剩余小于20%)

if (($cpu_id < 20)); then

echo "$IP服务器cpu剩余:$cpu_id%,请及时处理"

else

echo "$IP服务器cpu剩余:$cpu_id%"

fi

三、监控系统内存

#!/bin/bash

########################################################################

#This scripts is checking the free_mem,vision 0.1

#Author:HeJunyi

#E-mail:158****4484@

########################################################################

#抓取物理内存free值

echo Mem-free: `free -m | grep Mem | awk '{print $4}'`M

#抓取缓冲区的free值

echo buffers/cache-free: `free -m | grep - | awk '{print $4}'`M

#抓取Swap分区free值

echo Swap-free: `free -m | grep Swap | awk '{print $4}'`M

四、监控系统交换分区swap的情况

#!/bin/bash

########################################################################

#This scripts is checking the swap,vision 0.1

#Author:HeJunyi

#E-mail:158****4484@

########################################################################

#提取本服务器的IP地址信息

IP=`ifconfig eth1 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "`

#系统分配的交换分区总量

swap_total=`free -m | grep Swap | awk '{print $2}'`

#当前剩余的交换分区free大小

swap_free=`free -m | grep Swap | awk '{print $4}'`

#当前已使用的交换分区used大小

swap_used=`free -m | grep Swap | awk '{print $3}'`

#设置交换分区的告警值为20%

swap_warn=0.20

if (($swap_used != 0)); then

#如果交换分区已被使用,则计算当前剩余交换分区free所占总量的百分比,用小数来表示,要在小数点前面补一个整数位0

swap_per=`echo "scale=2;b=$swap_free/$swap_total;if(length(b)==scale(b)) print 0;print b"|bc`

#当前剩余交换分区百分比与告警值进行比较(当小于告警值20%时会返回1,小于大于时会返回0 )

swap_now=`expr $swap_per \< $swap_warn`

#如果当前交换分区使用即剩余小于20%(上面的返回值等于1)

if (($swap_now ==1));then

echo "$IP服务器swap交换分区使用率达到80%,只剩下"$swap_free"M 未使用,请及时处>理!"

fi

fi

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。