监控脚本
#!/bin/bash
#=================类nagios监控cpu使用情况/交换分区使用情况/根分区使用情况/用户登录情况=================
#完成如下功能:
#监控cpu的使用情况,当超过80%则警告
#监控交换分区的使用情况,当超75%则警告
#监控根分区的使用情况,当超过85%则警告
#监控系统用户的登录情况,当超过5个则警告
#=======================================================================================================
#获取本服务器的IP地址
IP=`ifconfig eth0|grep 'inet addr'|awk '{print $2}'|awk -F: '{print $2}'`
#指定邮件地址
mail_address=2348234@163.com
#指定cpu空闲百分比的警告值
cpu_free_warn=20
#指定交换分区剩余百分比的警告值
swap_warn=0.25
#指定用户登录数的警告值
user_count_warn=5
#指定根分区磁盘使用百分比的警告值
disk_used_warn=85
#+++++++++++++++++++++++++++++++监控cpu的使用情况,当超过80%则警告++++++++++++++++++++++++++++++++++++++++++++++++++
#取cpu的idle值(整数部分)
cpu_idle=`top -b -n 1 | grep Cpu | awk '{print $5}' | cut -f 1 -d "."`
#当前cpu使用超过80%(即剩余小于20%),立即发邮件告警
if (($cpu_idle < $cpu_free_warn)); then
echo "$IP服务器cpu剩余$cpu_idle%,使用率已经超过80%,请及时处理。" | mutt -s "$IP 服务器CPU告警" $mail_address
fi
#+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#-----------------------------监控交换分区的使用情况,当超75%则警告--------------------------------------------------
#系统分配的交换分区总量
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}'`
#交换分区剩余百分比
swap_per=0`echo "scale=2;$swap_free/$swap_total" | bc`
#判断交换分区的剩余百分比是否小于警告值
swap_now=`expr $swap_per \< $swap_warn`
#当小于警告值时,立即发邮件警告
if [ $swap_now == 0 ];then
echo "$IP服务器swap交换分区只剩下 $swap_free M 未使用,剩余不足20%,使用率已经超过80%,请及时处理。" | mutt -s "$IP 服务器内存告警" $mail_address
fi
#------------------------------------------------------------------------------------------------------------------------
#.......................监控根分区的使用情况,当超过85%则警告.................................
#取当前根分区(/dev/mapper/VolGroup-lv_root)已用的百份比值(只取整数部分)
disk=`df -hP|grep '/dev/mapper/VolGroup-lv_root'|awk '{print $5}' | cut -f 1 -d "%"`
#当根分取的使用超过85%时,立即发邮件警告
if (($disk > $disk_used_warn));
then
echo "$IP 服务器 /根分区 使用率已经超过85%,请及时处理。" | mutt -s "$IP 服务器硬盘告警" $mail_address
fi
#.............................................................................................................
#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&监控系统用户的登录情况,当超过5个则警告&&&&&&&&&&&&&&&&&&&&&&&&&&&
#取当前用户登录数
users=`uptime | awk '{print $4}'`
#当用户登录数超过5人,立即发邮件警告
if (($users >= $user_count_warn));
then
echo "$IP 服务器用户数已经达到$users个,请及时处理。" | mutt -s "$IP 服务器用户数告警" $mail_address
fi
#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?