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

使用说明

  • 前提: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 {1..1}

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

日志格式demo



日志格式分析

使用执行效果

脚本

#!/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

shell脚本异步日志分析-接口耗时、可用率的更多相关文章

  1. 用 shell 脚本做 restful api 接口监控

    问题的提出 基于历史原因,公司有一个"三无"采集服务--无人员.无运维.无监控--有能力做的部门不想接.接了的部门没能力.于是就一直这样裸奔,直到前几天一个依赖于这个采集服务的大数 ...

  2. 用 shell 脚本做日志清洗

    问题的提出 公司有一个用户行为分析系统,可以记录用户在使用公司产品过程中的一系列操作轨迹,便于分析产品使用情况以便优化产品 UI 界面布局.这套系统有点类似于 Google Analyse(GA),所 ...

  3. [转]shell脚本打印日志方法

    该文章转自:http://blog.csdn.net/wylfengyujiancheng/article/details/50019299 ----------------------------- ...

  4. 如何把rc.local里执行的shell脚本的日志内容放到其他位置

    rc.local的日志内容默认是/var/log/boot.log /etc/rc.d/rc.local文件的文件头是#!/bin/sh ,我们把这修改成#!/bin/sh -x,这样系统启动后就会把 ...

  5. Hadoop_13_Hadoop Shell脚本采集日志上传到HDFS

    案例1:开发shell采集脚本 1.点击流日志每天都10T,在业务应用服务器上,需要准实时上传至数据仓库(Hadoop HDFS)上 2.一般上传文件都是在凌晨24点操作,由于很多种类的业务数据都要在 ...

  6. shell 脚本执行日志通用模块

    目标 实现记录SHELL执行的開始时间,结束时间.执行状态,错误信息等,以函数封装日志记录的方式,脚本调用函数 源代码 通用函数脚本program_log_new.sh function init_l ...

  7. 简单的 shell 脚本 切分日志

    为避免日志过大,需要按天分割日志,定时计划任务脚本如下: /data/shell/backup_yesterday_nginx_log.sh declare logs_path="/data ...

  8. 运维常用shell脚本之日志清理

    1.创建一个日志清理脚本 #/bin/bash for i in `find /root/.pm2/logs -name "*.log"` do cat /dev/null > ...

  9. shell脚本备份日志文件

    crontab -e crontab -l service crond restart 55 7 * * * /data/app/autoprice7/resin-pro-3.1.15/log_old ...

随机推荐

  1. GC 基础(转)

    转自:http://blog.csdn.net/ning109314/article/details/10411495/ = GC 基础 ===================== JAVA堆的描述如 ...

  2. PHP入门怎么选?大学生适合学习吗?

    大学毕业,面对竞争激烈的社会,理想总是很丰满,现实却很残酷.在硕士.博士都随处可见的今天,本科和大专文凭就显得苍白无力,在面试官问你"有没有工作经验"的时候,你是不是只想起实习期间 ...

  3. windows平台下基于QT和OpenCV搭建图像处理平台

        在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...

  4. HDU3792---Twin Prime Conjecture(树状数组)

    Twin Prime Conjecture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  5. node.js之express框架入门篇

    一.express框架简介 express框架是后台的Node框架,在后台的受欢迎的程度,和jQuery一样 英语官网:http://expressjs.com/ 中文官网:http://www.ex ...

  6. slurm-16.05.3任务调度系统部署与测试(1)

      1.概述2.同步节点时间3.下载并解压文件4.编译安装munge-0.5.125.配置munge6.编译安装slurm-16.05.37.配置slurm8.配置MySQL数据库环境9.启动slur ...

  7. springMVC(1)---获取前段数据

    springMVC(1)---获取前段数据 首先说明,如果你学过Struts2,那么在学springMVC就会简单很多,我也不最基础的开始写了,我前篇文章搭建了个ssm框架,算是springmvc入门 ...

  8. Java----list常用方法汇总

    package ListTest; import java.util.ArrayList; import java.util.Iterator ; import java.util.List; /** ...

  9. JPA学习笔记(8)——映射双向一对多关联关系

    双向一对多关联关系 前面的博客讲的都是单向的,而本问讲的是双向的(双向一对多 = 双向多对一) 什么是双向? 我们来对照一下单向和双向 单向/双向 User实体类中是否有List< Order& ...

  10. gRPC异步处理应答

    gRPC异步处理应答 (金庆的专栏) gRPC的演示样例 greeter_async_client.cc 不算是异步客户端,它使用了异步请求.可是堵塞式等待应答,结果成为一个同步调用. std::st ...