任务日志抓取

#!/usr/bin/env bash

logPath=`pwd`

flow_id=$1

time=`date '+%Y-%m-%d'`

logFileName="flow_log_${flow_id}_$time.log"

echo ""

echo "start get log for flow $flow_id "

echo ""

function dltLogFile(){

rm -f $logFileName

}

function printHostInfo(){

   printNL 1 ./$logFileName

   echo "==============================================  host info ================================= " >> ./$logFileName

   printNL 1 ./$logFileName

   echo "--------------- host top ----------------- " >> ./$logFileName

   printNL 2 ./$logFileName

   top -b -n 1 | head -n 30 >> ./$logFileName

   printNL 2 ./$logFileName

   echo "--------------- host disk ----------------- " >> ./$logFileName

   printNL 2 ./$logFileName

   df -l >> ./$logFileName

}

function printNL(){

for((i=1;i<=$1;i++))

do

   echo '' >> $2

done

}

function printInstanceInfo(){

  printNL 3 ./$logFileName

  echo "========================================= >> instance info  ================================= " >> ./$logFileName

  printNL 1 ./$logFileName

  instancePort=${logPath%/*}

  instancePort=${instancePort##*/}

  workDir=`ps -ef | grep /$instancePort/ | grep -v grep| awk -v FS=" " -v OFS="#" '{print $8}'`

  workDir=${workDir%/*}

  pid=`ps -ef | grep /$instancePort/ | grep -v grep| awk -v FS=" " -v OFS="#" '{print $2}'`

  printNL 1 ./$logFileName

  echo "--------------- instance version ----------------- " >> ./$logFileName

  printNL 2 ./$logFileName

  workDirRoot=${workDir%/bin/etl*}

  more $workDirRoot/version.txt >> ./$logFileName

  printNL 3 ./$logFileName

  printNL 1 ./$logFileName

  echo "--------------- instance top ----------------- " >> ./$logFileName

  printNL 2 ./$logFileName

  top -b -n 1 -Hp $pid| head -n 30 >> ./$logFileName

  printNL 3 ./$logFileName

  echo "--------------- instance GC ----------------- " >> ./$logFileName

  printNL 1 ./$logFileName

  $workDir/jstat -gcutil $pid 1 10 >> ./$logFileName

  printNL 3 ./$logFileName

  echo "--------------- instance limits ----------------- " >> ./$logFileName

  printNL 1 ./$logFileName

  cat /proc/$pid/limits >> ./$logFileName

  printNL 3 ./$logFileName

  echo "--------------- instance jstack ----------------- " >> ./$logFileName

  printNL 1 ./$logFileName

  $workDir/jstack $pid >> ./$logFileName

  printNL 3 ./$logFileName

  echo "--------------- instance start stop ----------------- " >> ./$logFileName

  printNL 1 ./$logFileName

  more idatafusion.etl-instance.info*.log |grep -E 'etl is starting|etl change to|current pid is|etl is shutting down' >> ./$logFileName

}

function unzipFile(){

# task-manager

mngLogFiles=`ls idatafusion.etl-instance.task-manager.*zip`

for mngLogFile in $mngLogFiles

do

  mngLogFileTxt=${mngLogFile%.*}

  if [ -f $logPath/$mngLogFileTxt ]

  then

     echo "---- >> unzip $mngLogFile"

  else

     echo "---- >> unzip $mngLogFile"

     unzip $mngLogFile

  fi

done

# task-schedule

scdLogFiles=`ls idatafusion.etl-instance.task-schedule.*zip`

for scdLogFile in $scdLogFiles

do

  scdLogFileTxt=${scdLogFile%.*}

  if [ -f $logPath/$scdLogFileTxt ]

  then

     echo "---- >> unzip $scdLogFile"

  else

     echo "---- >> unzip $scdLogFile"

     unzip $scdLogFile

  fi

  done

# task-status

sttLogFiles=`ls idatafusion.etl-instance.task-status.*zip`

for sttLogFile in $sttLogFiles

do

  sttLogFileTxt=${sttLogFile%.*}

  if [ -f $logPath/$sttLogFileTxt ]

  then

     echo "---- >> unzip $sttLogFile"

  else

     echo "---- >> unzip $sttLogFile"

     unzip $sttLogFile

  fi

done

# info

infoLogFiles=`ls idatafusion.etl-instance.info*zip`

for infoLogFile in $infoLogFiles

do

  infoLogFileTxt=${infoLogFile%.*}

  if [ -f $logPath/$infoLogFileTxt ]

  then

     echo "---- >> unzip $infoLogFile"

  else

     echo "---- >> unzip $infoLogFile"

     unzip $infoLogFile

  fi

done

}

function printFlowInfo(){

printNL 3 ./$logFileName

echo "========================================= >> flow info ================================= " >> ./$logFileName

printNL 3 ./$logFileName

echo "--------------- flow module info ----------------- " >> ./$logFileName

printNL 2 ./$logFileName

more idatafusion.etl-instance.task-manager*.log |grep /flow/$flow_id >> ./$logFileName

printNL 3 ./$logFileName

echo "--------------- flow schedule info ----------------- " >> ./$logFileName

printNL 2 ./$logFileName

more idatafusion.etl-instance.task-schedule*.log |grep -A 10 /$flow_id >> ./$logFileName

printNL 2 ./$logFileName

more idatafusion.etl-instance.task-schedule*.log |grep "task $flow_id " >> ./$logFileName

printNL 2 ./$logFileName

printNL 3 ./$logFileName

echo "--------------- flow status info ----------------- " >> ./$logFileName

  printNL 2 ./$logFileName

more idatafusion.etl-instance.task-status*.log |grep " task $flow_id " >> ./$logFileName

printNL 2 ./$logFileName

more idatafusion.etl-instance.task-manager*.log |grep "/metadata/schedule/$flow_id/" >> ./$logFileName

printNL 2 ./$logFileName

}

function printLogTail(){

printNL 3 ./$logFileName

echo "======================================= >> log tail ================================= " >> ./$logFileName

printNL 3 ./$logFileName

echo "--------------- info log 200 tail ----------------- " >> ./$logFileName

printNL 3 ./$logFileName

tail -200 idatafusion.etl-instance.info.log  >> ./$logFileName

printNL 3 ./$logFileName

echo "--------------- error log 500 tail ----------------- " >> ./$logFileName

printNL 3 ./$logFileName

tail -500 idatafusion.etl-instance.error.log  >> ./$logFileName

}

#

dltLogFile

#

unzipFile

#

printHostInfo

#

printInstanceInfo

#

printFlowInfo

#

printLogTail

#

echo ""

echo "====== >>>> flow $flow_id log save in $logFileName"

echo ""

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值