签到成功

知道了

CNDBA社区CNDBA社区

datax监控脚本

2022-02-07 11:48 1171 0 原创 DATAX
作者: hbhe0316
[root@xxx scripts]# cat checkDataxLog.sh
#!/bin/sh
###############################################################################################################
#Script name: checkDataxLog.sh
#Script description: check Datax log
#Current Release Version: 1.0.0
#Script Owner: He ,Haibo
#Latest editor: He, Haibo
#Support platform:  Linux OS for redhat and centos.
#Date: 2021/11/8---first Version for checkDataxLog.
#Change log:
#Descript:checkDataxLog.sh
#
###############################################################################################################
export LANG=en_US
osbox=`uname`
RHversion=$(cat /proc/version | sed 's/[^0-9]//g' | cut -b -3)

###打印日志函数
log_info(){
        DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
        USER_N=`whoami`
        echo "${DATE_N} ${USER_N} execute $0 [INFO] $@"
}

log_error(){
    DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
    USER_N=`whoami`
    echo -e "/033[41;37m ${DATE_N} ${USER_N} execute $0 [ERROR] $@ /033[0m"
}

fn_log(){
    if [[ $? -eq 0 ]];then
        log_info "$@ sucessed."
        echo -e "/033[32m $@ sucessed. /033[0m"
    else
        log_error "$@ failed."
        echo -e "/033[41;37m $@ failed. /033[0m"
    fi
}

checkExecuteUser(){
        username=`id | awk -F ' ' {'print $1'} | awk -F '(' {'print $2'} | awk -F ')' {'print $1'}`
        if [[ ${username} == "root" ]];then
                continue
        else
                fn_log "Current excute user is not sysinsp ,shell will exist."
                exit 1
        fi
}

###Create /tmp/log if not exist.
mkdirLogPath(){
    if [[ ! -d /datax/logs ]];then
        mkdir -p /datax/logs
        chmod 767 /datax/logs
    fi
    CheckLinuxLogPath="/datax/logs"
    CheckLinuxLog=*_$(date +%y%m%d).log
}

###Get OS Arch Linux or not
getOsArch(){
        if [[ "$osbox" == "Linux" ]];then
                continue
        else
                fn_log "Current OS is $osbox,shell is exit now."
                echo 0
                exit 0
        fi
}

###Get redhat or centos
getOsCentosOrRedhat(){
        cat /proc/version | grep -iE "redhat|centos" > /dev/null
        if [[ $? == 0 ]];then
                continue
        else
                echo "Current OS is not centos or redhat."
                echo 1
                exit 1
        fi
}

###Get OS Version
getOsVerion(){
        ###判断系统是否为Redhat,如果不是则退出,支持Redhat|Centos 7版本
        cat /proc/version | grep -i redhat > /dev/null
        if [[ $? == 0 ]];then
                if [[ "$RHversion" -ge 310 ]];then
                        OSVersion="redhat7"
                else
                        echo "Current Rehat Version will not support."
                        echo 1
                        exit 1
                fi
        else
                if [[ "$RHversion" -ge 310 ]];then
                        OSVersion="centos7"
                else
                        echo "Current Rehat Version will not support."
                        echo 1
                        exit 1
                fi
        fi
}


checkDataxLog(){
        cd /datax/logs
##ORA-01031: insufficient privileges
        for logFile in `ls *_$(date +%y%m%d).log`
        do
                ERRORNUM=0
                for FAILEDNUMS in `cat $logFile | grep -w "读写失败总数" | grep -v grep | grep -v "#" | awk -F ':' {'print $2'} | sed 's/[ /t]//g' | xargs`
                do
                        if [[ $FAILEDNUMS -gt 0 ]];then
                                let ERRORNUM+=1
                                if [[ $ERRORNUM -ge 3 ]];then
                                        echo "Please check /datax/logs/$logFile,读写失败总数"
                                        exit
                                fi
                        fi
                done

        ORAOthers=`cat $logFile | egrep -w "ORA-*" | wc -l`
        if [[ $ORAOthers -gt 0 ]];then
                for ORAINFO in `cat $logFile | grep ORA-* | awk -F '具体错误信息为' {'print $2'} | awk -F ': ' {'print $2'} | xargs`
                do
                        echo "Please check /datax/bin/$logFile,$ORAINFO"
                        exit
                done
        fi

        ERROROthers=`cat $logFile | egrep -w "ERROR" | wc -l`
        if [[ $ERROROthers -gt 0 ]];then
                        echo "Please check /datax/bin/$logFile,has ERROR"
        fi


        done

}

main(){
        checkExecuteUser
        mkdirLogPath
        getOsArch
        getOsCentosOrRedhat
        getOsVerion
        checkDataxLog
}


main
http://www.cndba.cn/hbhe0316/article/106606
http://www.cndba.cn/hbhe0316/article/106606
http://www.cndba.cn/hbhe0316/article/106606
http://www.cndba.cn/hbhe0316/article/106606 http://www.cndba.cn/hbhe0316/article/106606 http://www.cndba.cn/hbhe0316/article/106606 http://www.cndba.cn/hbhe0316/article/106606 http://www.cndba.cn/hbhe0316/article/106606
http://www.cndba.cn/hbhe0316/article/106606
http://www.cndba.cn/hbhe0316/article/106606

版权声明:本文为博主原创文章,未经博主允许不得转载。

Datax

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
hbhe0316

hbhe0316

关注

1.只有承认无知,才能装下新的东西; 2.进步来自一点点滴滴的积累; 3.广博让你更优秀,而专业让你无法替代; 4.挫折和失败能够转换为一种财富。

  • 889
    原创
  • 1
    翻译
  • 13
    转载
  • 24
    评论
  • 访问:1038515次
  • 积分:1523
  • 等级:核心会员
  • 排名:第6名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ