功能介绍:
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|grepCpu
us=`top-n 1|grepCpu|awk'{print $2}'|awk-F"%"'{print $1}'`
us100=`echo"$us*100"|bc|awk-F"."'{print $1}'`
#echo us*100 = $us100
sy=`top-n 1|grepCpu|awk'{print $3}'|awk-F"%"'{print $1}'`
sy100=`echo"$sy*100"|bc|awk-F"."'{print $1}'`
#echo sy*100 = $sy100
cpu_number=`echo"$us100+$sy100"|bc`
#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"15210942688@163.com
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 "/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"15210942688@163.com
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"15210942688@163.com
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|grepRX|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|grepnginx|grep-vgrep|wc-l` #5
if[ $nginx_port_number == "0"];then
echo"$IP nginx is down"| mail -s "warn!server: $IP nginx_port is down"15210942688@163.com
/usr/local/nginx/sbin/nginx
if[ $test_nginx != "0"];then
echo"$IP nginx is down"| mail -s "warn!server: $IP not't restart"15210942688@163.com
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"15210942688@163.com
/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"15210942688@163.com
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|grepphp-fpm|grep-vgrep|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"15210942688@163.com
/etc/init.d/php-fpmrestart
test_php1=echo$?
if[ $test_php1 != "0"];then
echo"$IP php-fpm is down"| mail -s "warn!server: $IP not't restart"15210942688@163.com
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"15210942688@163.com
/etc/init.d/php-fpmrestart
test_php2=echo$?
if[ $test_php2 != "0"];then
echo"$IP php is down"| mail -s "warn!server: $IP not't restart"15210942688@163.com
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" 15210942688@163.com
# /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" 15210942688@163.com
# 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" 15210942688@163.com
# /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" 15210942688@163.com
# fi
#else
# echo -e "\033[32m ...MYSQL is running(OK) ! $(date) \033[0m"
#fi
#echo "________________________________________________________________________________"
测试成功的回显如下图,可以通过计划任务+脚本实现实时监控。
可以参考: