#!/bin/bash
#=================类nagios监控cpu使用情况/交换分区使用情况/根分区使用情况/用户登录情况=================
#完成如下功能:
#监控cpu的使用情况,当超过80%则警告
#监控交换分区的使用情况,当超75%则警告
#监控根分区的使用情况,当超过85%则警告
#监控系统用户的登录情况,当超过5个则警告
#=======================================================================================================
#获取本服务器的IP地址
IP=`ifconfig eth0|grep 'inet addr'|awk '{print $2}'|awk -F: '{print $2}'`
#指定邮件地址
[email protected]
#指定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
#&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&