script/检查作业成功率/check_job_sucessful.sh

125 lines
3.9 KiB
Bash

#!/bin/bash
#set -x
PRG="$0"
while [ -h "$PRG" ]; do
ls=$(ls -ld "$PRG")
link=$(expr "$ls" : '.*-> \(.*\)$')
if expr "$link" : '.*/.*' >/dev/null; then
PRG="$link"
else
PRG=$(dirname "$PRG")/"$link"
fi
done
PRGDIR=$(dirname "$PRG")
#full path
cd $PRGDIR
ROOT_DIR=$(pwd)
cd - >/dev/null
echo "" >$ROOT_DIR/check_report.txt
#数据库的用户名和密码
MYSQLUSER="unadba"
MYSQLPWD="1223Bc@2008"
# 查询某个策略的成功率
function check_sucessful(){
# 代理信息和策略名
comname=$1
compid=$2
policyname=$3
#查询
#先查询出所有的tbl_jobhistory表
SQL_TABLES="SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='unary' AND TABLE_NAME regexp 'tbl_jobhistory(_2)|^tbl_jobhistory$'"
RESULT_TABLES=`mysql -u$MYSQLUSER -p$MYSQLPWD -e "$SQL_TABLES" 2>/dev/null|awk 'NR>1'`
#拼接所有的tbl_jobhistory表
ALLJOBHISTORY=""
for i in $RESULT_TABLES
do
JOBHISTORY="select operdesc,count(*) as n2 from tbl_jobhistory${i:14} where policyname='${policyname}' and compid='${compid}' group by operdesc"
# UNION ALL并到一起去
ALLJOBHISTORY=$ALLJOBHISTORY" UNION ALL "$JOBHISTORY
done
#最终拼接的表
ALLJOBHISTORY=${ALLJOBHISTORY:10}
SELECTALL="select operdesc,sum(n2) as num from ($ALLJOBHISTORY) b group by b.operdesc"
SELECTCHECK="select 1-(tb1.num1/tb2.num2) from (select sum(num) as num1 from \
($SELECTALL) t1 where operdesc like '%失败%') as tb1 \
right JOIN \
(select sum(num) as num2 from \
($SELECTALL) t2) as tb2 \
on 1=1;"
recode=`mysql -u$MYSQLUSER -p$MYSQLPWD unary -e "$SELECTCHECK" 2>/dev/null|tail -1`
# 输出结果:
echo -e "${comname}" >>$ROOT_DIR/check_report.txt
if [ ${recode} = "NULL" ]; then
errmsg="未查询到失败的作业,可能是计算有问题,请人工复核!"
echo -e "\t ${policyname} 的作业成功率为: 100% \n\n ${errmsg}" >>$ROOT_DIR/check_report.txt
# 异常的将查询到的结果输出
echo "策略 ${policyname} 查询到的所有任务状态如下:" >>$ROOT_DIR/check_report.txt
mysql -u$MYSQLUSER -p$MYSQLPWD unary -e "$SELECTALL" >> $ROOT_DIR/check_report.txt
else
recode2=$(echo "scale=2;$recode * 100" | bc)
recode=${recode2:0:5}
echo -e "\t ${policyname} 的作业成功率为: ${recode}%" >>$ROOT_DIR/check_report.txt
fi
# 间隔符
echo "-----------" >>$ROOT_DIR/check_report.txt
}
# 需要检查的代理
# sr
echo "===========sr================" >>$ROOT_DIR/check_report.txt
#mysql物理
check_sucessful "DPM2_6.9长期_MySQL物理多通道13.167_sr" "2a0df1771995da56fc60663293bd92da" "长期任务-mysql物理多通道"
#oracle物理
check_sucessful "DPM3_6.9长期_OraclePhysical多通道29.41_sr" "2752836e63174d405e3e9cb5cf493d4a" "长期Oracle多通道"
# zstack
check_sucessful "DPM5_6.9长期_zstack" "48CB24F42D8048FCA9DA1D6498CE66FC" "bk1"
# dhx
echo -e "\n===========dhx===============" >>$ROOT_DIR/check_report.txt
#msyqlcdm
check_sucessful "CDM4_6.9.3长期MySQLCDM_29.48_dhx" "be98d51cd9658ed982a3c3e411633418" "长期"
#oraclecdm
check_sucessful "CDM5_6.9.3长期OracleCDM备份_29.40_dhx" "d0003e0c3da5730a7252fe973aec538b" "长期"
#sanforscp
check_sucessful "CDM1_sanforscp" "45CE47DCD8D14C79BA9A4CD8BF3160CA" "长期"
#oracleclp
check_sucessful "6.9.3长期OracleCLP备份_rac_dhx" "2737975f-15c3-4716-968a-fc8ab2e9f1fc" "长期clp"
#mh
echo -e "\n===========mh===============" >>$ROOT_DIR/check_report.txt
#file
check_sucessful "DPM1_6.9长期_文件定时29.34_mh" "dc62d38f7e8ad92d2bdc77e0760173e6" "多通道"
check_sucessful "DPM1_6.9长期_文件定时29.34_mh" "dc62d38f7e8ad92d2bdc77e0760173e6" "普通"
#pg
check_sucessful "DPM4_6.9长期_PG_29.33_mh" "289063a564255daff1f211fb7e1db3b0" "pg物理挂载备份长期"
# vmware
check_sucessful "CDM3_6.9长期vm备份_mh" "3D661E09C4F0456B97FBFBA5386C70D8" "长期"
echo "开始发送邮件"
python $ROOT_DIR/SendEmail.py