shell脚本异步日志分析-接口耗时、可用率

背景:现有日志接入日志报表大盘,为了避免作业高峰期间(双十一),系统也要观测系统整体情况,因此提出了观测近五分钟,接口成功率以及耗时等工具(默认统计最近五分钟,并进行结果汇总统计)

使用说明

  • 前提:pgm免登陆配置好,生成ssh公钥 如果配置不成功通过修改该脚本 pgm 后面加入 -A 输入密码
  • 命令执行后,trace.log中实时看捞取数据
  • 结果保存在 result.log中
  • 命令后台运行 执行成功后会 提示 commplete see trace.log or result.log
  • 默认执行5次,每次sleep 60秒 调整可以修改for v1 in {1..5} 以及sleep time;注意执行一次for v1 in

备注:pgm是公司内部脚本,可参考文章:shell脚本-批量执行机器命令

日志格式demo

image.png
日志格式分析
image.png

使用执行效果

image.png

image.png

image.png

脚本

#!/bin/shell
## 说明:波次进行异步分析,完成会提示  结果在 result.log 展示
## sh  nav-wave.sh    wmporderhost   

host=$1

analysis(){
for v1 in {1..5}
do
 if [ $v1 == 1 ];then

    rm -rf trace.log
    rm -rf result.log

 fi

 start=`date "+%H:%M:%S" -d '-1 min'`
 end=`date "+%H:%M:%S"`



  pgm  `armory -leg $host` "cat /home/admin/wmporder/logs/wave/wave-dp.log  | awk -vs=$start -ve=$end 's<=\$2&&\$2<=e' | grep $filter"  >> trace.log
  grep "wave-dp" trace.log | awk -F '|' '{count+=1} BEGIN{s1=0;s2=0} { s1+=$5;s2+=$6 }  END{print "采样总量:"count",数量1总和:"s1",数量2总和:"s2}' trace.log | sed "s/^/`date`---/g" >> result.log
  grep "wave-dp" trace.log | awk -F '|' '{sum+=$4;count+=1} BEGIN{max=0} {if ($4+0 > max+0) max = $4 fi}  END{print "平均耗时:"sum/count" ms,最大耗时:"max" ms"}' |sed "s/^/`date`---/g" >> result.log

 if [ $v1 == 5 ];then
    break;
 fi

 sleep 60


done

echo "commplete see trace.log or result.log"

}

echo "你想干嘛?"
select var in "任务-创建总量" "任务-插入无效任务" "任务-开始执行任务数" "任务-执行完成任务数" "波次包裹维度-执行成功的包裹数" "波次包裹维度-失败回滚的包裹数" "波次包裹维度-计划执行的包裹数(加锁之前)" "波次包裹维度-计划执行的包裹数(加锁之后)" "拣选单-拣选单总数" "拣选单-秒杀拣选单总数" "拣选单-取消拣选单数";do
    break;
done
case "$var" in
"任务-创建总量"*)

filter="waveSelfCreateNum"

analysis  &
;;

"任务-插入无效任务"*)

filter="waveSelfInvalidNum"

analysis  &

;;

"任务-开始执行任务数"*)

filter="waveSelfBeginNum"

analysis  &

;;

"任务-执行完成任务数"*)

filter="waveSelfFinishNum"

analysis  &

;;

"波次包裹维度-执行成功的包裹数"*)

filter="packageSuccessWaveNum"

analysis  &

;;

"波次包裹维度-失败回滚的包裹数"*)

filter="packageFaileInWaveNum"

analysis  &

;;

"波次包裹维度-计划执行的包裹数(加锁之前)"*)

filter="packagePlanInWaveNum"

analysis  &

;;

"波次包裹维度-计划执行的包裹数(加锁之后)"*)

filter="packageInWaveNum"

analysis  &

;;

"拣选单-拣选单总数"*)

filter="genPickbillGN"

analysis  &

;;

"拣选单-秒杀拣选单总数"*)

filter="genSeckPickbillGN"

analysis  &

;;

"拣选单-取消拣选单数"*)

filter="cancelPickbillGN"

analysis  &

;;

esac


posted on 2017-12-25 14:20  西界-X  阅读(1440)  评论(0编辑  收藏  举报

导航