#!/bin/bash
now=`date -u -d"+8 hour" +'%Y-%m-%d %H:%M:%S'`
servername=`hostname`
###get server ip
server_ip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"`
###get server external ip
path=/usr/local/ktr/$(date +%Y-%m-%d)/
mkdir -p $path
#cpu阙值
cpu_warn='90'
#mem阙值
mem_warn='500'
#disk阙值
disk_warn='90'
#sever ip address
ip_address=`ifconfig eth1 |grep "inet"|awk '{print $2}'`
item_cpu () {
cpu_use=`top -n 1|awk -F '[, %]+' 'NR==3 {print 100-$11}'`
#cpu_use=`top -b -n 1 | grep Cpu | awk '{print $2}'|cut -f 1 -d "."`
echo "$now curret cpu utilization is $cpu_use"
if [ $cpu_use -gt $cpu_warn ]
then
Subject="服务器${server_ip}上cpu告警"
Content="服务器${server_ip}上cpu告警,当前cpu使用率为${cpu_use}%,请登录服务器进行检查"
echo "$Content" | mail -s "$Subject" 111@sss.com,222@ddd.com
echo "服务器${server_ip}上cpu告警,当前cpu使用率为${cpu_use}%" >> $path'cpu_warn_'$(date +%Y-%m-%d-%H:%M:%S).txt
else
echo "cpu ok."
fi
}
#---mem
item_mem () {
mem_free=`free -m | grep "Mem" | awk '{print $4+$6}'`
echo "$now 内存空闲为 ${mem_free}MB"
if [ $mem_free -lt $mem_warn ]
then
Subject="服务器${server_ip}上内存告警"
Content="服务器${server_ip}上内存告警,当前空闲内存为${mem_free}MB,请登录服务器进行检查"
echo "$Content" | mail -s "$Subject" 111@sss.com,222@ddd.com
echo "服务器${server_ip}上内存告警,当前空闲内存为${mem_free}MB" >> $path'mem_warn_'$(date +%Y-%m-%d-%H:%M:%S).txt
else
echo "mem ok."
fi
}
#---disk
item_disk () {
`df -P | grep /dev | grep -v -E '(tmp|boot)' | awk '{print $1,$5}' | cut -f 1 -d "%" > $path/test.txt`
while read line
do
disk_name=$(echo $line | awk '{print $1}')
disk_used=$(echo $line | awk '{print $2}')
query="'$now','$servername','$ip_address','$cpu_use','$mem_free','$disk_used','$disk_name'"
echo $query
#mysql -h**ip -u**用户名 -p密码 FK_LOG -e "INSERT INTO server_monitor(stat_date, server_name,ip_address,
#cpu_utilization, memory_utilization, disk_used,disk_name) VALUES($query);"
if [ $disk_used -gt $disk_warn ]
then
Subject="服务器${server_ip}上存储告警"
Content="服务器${server_ip}上存储告警,当前率为${disk_used}%,请登录服务器进行检查"
echo "$Content" | mail -s "$Subject" 111@sss.com,222@ddd.com
echo "服务器${server_ip}上内存告警,当前内存空闲率为${disk_used}%" >> $path'disk_warn_'$(date +%Y-%m-%d-%H:%M:%S).txt
else
echo $disk_name" is ok."
fi
done < $path/test.txt
}
#---item_logfiles
item_logfiles () {
time=$(date +%Y-%m-%d-%H:%M:%S)
filefolder=$path
#--for filename in pdfhuixie.log,pdfjiexi.log,userinfo.log,sm.log,bao1.log,bao2.log,gk.log,user.log,zhxs.log,sent.log,yinqing.log,jghx.log,jiafang.log
for filename in user.log pdfhuixie.log
do
if [ ! -f $filefolder$filename ]
then
touch $filefolder$filename
echo "touch successful"
fi
filesize=`ls -l $filefolder$filename | awk '{ print $5}'`
maxsize=$((1024*10))
if [ $filesize -gt $maxsize ]
then
mv $filefolder$filename $filefolder$filename.$time
echo "backup file successful"
fi
done
}
item_cpu
item_mem
item_disk
item_logfiles