#COUNT()统计日志内关键字出现次数,默认前一天,每出现一次为一次成功业务,$1指定前几天
#!/bin/bash
. /etc/init.d/functions
LINE="\e[1;37m+-----------------------------------------------------------------+\e[0m"
LOG=/opt/log/`date +%Y%m%d`.log
[ -f /opt/log ] || mkdir -p /opt/log
LOG_URI="/opt/nginx/log/"
K=${1-1}
M="10.1.193.97"
S="172.31.112.173"
IP=`ifconfig |awk -F '[ :]+' 'NR==10{print $3}'`
CPU_MEM_DISK(){
echo -e ${LINE}
echo -e "CPU、内存、硬盘"
CPUS=`top -n1|awk -F "," 'NR==3{print $4}'`
MEM=`free -m|awk -v OFS="/" 'NR==2{print $2,($3+$7)}'`
DISK=`df|awk '{if(NR>1){print $4}}'|sort -nr|tail -n1`
DISK2=`df|awk '{if(NR>1){print $5}}'|sort -nr|head -n1`
top -n1 -b|head -n 4 >> ${LOG}
free -m >> ${LOG}
df -h >> ${LOG}
echo -e "CPU 未使用百分比为 ${CPUS} ;\n内存总空间与剩余空间为 {MEN};\n磁盘最小剩余空间为`expr ${DISK} /
1024`M;最高使用率为 ${DISK2}\n"
echo -e ${LINE}
}
PORTS_CHECK(){
echo -e ${LINE}
echo -e "端口状态:"
PORTS="
80
443
22
"
for i in ${PORTS};do
netstat -anoplt|grep ${i} >> ${LOG} && action ${i} || action "${i} is not work !!!" /bin/false
done
}
PROCESS_CHECK(){
PORCESS="
docker
sshd
"
echo -e ${LINE}
echo -e "进程状态:"
J=0
for i in ${PORCESS};do
ps -ef |grep ${i}|grep -v grep >> ${LOG} &&action ${i};let J=J+1 ||action ${i} /bin/false
done
echo -e "目标进程存活${J}个"
}
MYSQL_CHECK(){
echo -e ${LINE}
echo -e "数据库主从状态:"
if [[ ${IP} == ${M} ]];then
mysql -uroot -p123456 -e "show master status;"
elif [[ ${IP} == ${S} ]];then
mysql -uroot -p123456 -e "show slave status\G;" |grep -E "Master_Log_File|Read_Master_Log_Pos|Slave_IO
_Running|Last_Err|Seconds_Behind_Master"
else
echo "IP设置有问题"
fi
}
COUNT(){
J=1
while [ $J -le ${K} ];do
DAY=`date -d "$J days ago" +%Y-%m-%d`
SUM=0
for i in ${LIST};do
NUM=`cat ${i}|grep ${DAY}|grep -E "GET|key2..."|wc -l`
let SUM=${SUM}+${NUM}
done
let J++
echo "SUM ${DAY} is ${SUM}"
done
# echo "SUM is ${SUM}"
}
if [[ ${IP} == ${M} ]];then
CPU_MEM_DISK
PORTS_CHECK
PROCESS_CHECK
MYSQL_CHECK
echo -e ${LINE}
elif [[ ${IP} == ${S} ]];then
CPU_MEM_DISK
MYSQL_CHECK
echo -e ${LINE}
else
echo "未取到设置的IP"
fi
echo -e "\e[?25h"
echo -e "\e[?25h" >> ${LOG}
echo -e ${LINE} >> ${LOG}