功能介绍:
1.系统方面:
(1)CPU检查报警
(2)内存检查,自动释放
(3)硬盘检查报警
(4)网络检查
2.服务方面:
(1)NGINX检查报警
(2)PHP检查报警
(3)MYSQL检查报警
代码如下:
#!/bin/bash
IP=`ifconfig|awk 'NR==2{print $2}'|awk -F: '{print $2}'`
#一.检查系统情况
#1.CPU检查
echo "##########CPU state show##########"
echo "_____________________________________________________________________________________________"
top -n 1|grep Cpu
us=`top -n 1|grep Cpu|awk '{print $2}'|awk -F"%" '{print $1}'`
us100=`echo "$us*100"|awk -F"." '{print $1}'`
#echo us*100 = $us100
sy=`top -n 1|grep Cpu|awk '{print $3}'|awk -F"%" '{print $1}'`
sy100=`echo "$sy*100"|awk -F"." '{print $1}'`
#echo sy*100 = $sy100
cpu_number=`echo "$us100+$sy100"`
#echo us*100+sy*100 = $cpu_number
if [ $cpu_number -gt "7000" ];then
echo "$IP CPU is hight" | mail -s "warn!server: $IP CPU is hight"
else
echo -e "\033[32m ...CPU is (OK) ! \033[0m"
fi
echo "_____________________________________________________________________________________________"
echo ""
#2.内存检查
echo "##########MEM state show##########"
echo "_____________________________________________________________________________________________"
free -m|awk 'NR<3{print}'
free -g |grep -i mem |awk '{if($4 < 10){ printf("3") > "/proc/sys/vm/drop_caches"}}';
echo -e "\033[32m ...内存 is (OK) ! \033[0m"
echo "_____________________________________________________________________________________________"
echo""
#3.硬盘空间检查
echo "##########DRIVE state show##########"
echo "_____________________________________________________________________________________________"
df -h
use_df=`df -h|awk 'NR==3{print $4}'`
if [ $use_df == "90%" ];then
echo "$IP DF is hight" | mail -s "warn!server: $IP DF is hight"
else
echo -e "\033[32m ...硬盘 is (OK) ! \033[0m"
fi
if [ $use_df == "95%" ];then
echo "$IP df is hight" | mail -s "warn!server: $IP DF is hight"
else
echo -e "\033[32m ...硬盘 is (OK) ! \033[0m"
fi
echo "_____________________________________________________________________________________________"
echo ""
#4.网络检查
echo "##########NETWORK state show##########"
ifconfig|awk -F":" 'NR==2 {print $2}'|awk 'BEGIN{print "IP"}{print $1}'
ifconfig|grep RX|awk 'NR==2{print}'
echo -e "\033[32m ...网络 is (OK) ! \033[0m"
echo "_____________________________________________________________________________________________"
echo ""
####################################################################################################
#二.检查nginx、php、mysql状态
#1.nginx ps and netstat
echo "##########nginx state show##########"
echo "_____________________________________________________________________________________________"
nginx_port_number=`netstat -lntp|grep :80|wc -l` #1
nginx_process_number=`ps -ef|grep nginx|grep -v grep |wc -l` #5
if [ $nginx_port_number == "0" ];then
echo "$IP nginx is down" | mail -s "warn!server: $IP nginx_port is down"
/usr/local/nginx/sbin/nginx
if [ $test_nginx != "0" ];then
echo "$IP nginx is down" | mail -s "warn!server: $IP not't restart"
fi
else
echo -e "\033[32m ...nginx is running(OK) ! $(date) \033[0m"
fi
if [ $nginx_process_number == "0" ];then
echo "$IP nginx is down" | mail -s "warn!server: $IP nginx_process is down"
/usr/local/nginx/sbin/nginx
test_nginx2=echo $?
if [ $test_nginx2 != "0" ];then
echo "$IP nginx is down" | mail -s "warn!server: $IP not't restart"
fi
else
echo -e "\033[32m ...nginx is running(OK) ! $(date) \033[0m"
fi
echo "_____________________________________________________________________________________________"
echo ""
#2.php ps and netstat
echo "##########php state show##########"
echo "_____________________________________________________________________________________________"
php_fpm_port_number=`netstat -lntp|grep :9000|wc -l` #1
php_fpm_process_number=`ps -ef|grep php-fpm|grep -v grep|wc -l` #129
if [ $php_fpm_port_number == "0" ];then
echo "$IP php-fpm is down" | mail -s "warn!server: $IP php_fpm_port is down"
/etc/init.d/php-fpm restart
test_php1=echo $?
if [ $test_php1 != "0" ];then
echo "$IP php-fpm is down" | mail -s "warn!server: $IP not't restart"
fi
else
echo -e "\033[32m ...PHP is running(OK) ! $(date) \033[0m"
fi
if [ $php_fpm_process_number == "0" ];then
echo "$IP nginx is down" | mail -s "warn!server: $IP php_fpm_process is down"
/etc/init.d/php-fpm restart
test_php2=echo $?
if [ $test_php2 != "0" ];then
echo "$IP php is down" | mail -s "warn!server: $IP not't restart"
fi
else
echo -e "\033[32m ...PHP is running(OK) ! $(date) \033[0m"
fi
echo "_____________________________________________________________________________________________"
echo ""
#3.mysql ps and netstat
echo "##########mysql state show##########"
echo "_____________________________________________________________________________________________"
mysql_port_number=`netstat -lntp|grep :3306|wc -l` #1
mysql_process_number=`ps -ef|grep mysql|grep -v grep|wc -l` #2
if [ $mysql_port_number == "0" ];then
echo "$IP mysql is down" | mail -s "warn!server: $IP mysql_port is down"
/etc/init.d/mysqld restart
test_mysql1=echo $?
if [ $test_mysql1 != "0" ];then
echo "$IP mysql is down" | mail -s "warn!server: $IP not't restart"
fi
else
echo -e "\033[32m ...MYSQL is running(OK) ! $(date) \033[0m"
fi
if [ $mysql_process_number == "0" ];then
echo "$IP mysql is down" | mail -s "warn!server: $IP mysql_process is down"
/etc/init.d/mysqld restart
test_mysql2=echo $?
if [ $test_php2 != "0" ];then
echo "$IP mysql is down" | mail -s "warn!server: $IP not't restart"
fi
else
echo -e "\033[32m ...MYSQL is running(OK) ! $(date) \033[0m"
fi
echo "_____________________________________________________________________________________________"