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

使用说明

  • 前提: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. UVA434 - Matty's Blocks

    题意:已知前视图和右视图,求最少需要几个正方体以及至多可以再增加几个正方体. 分析:先对于最小木块数,要想用最少的立方体搭建,那就意味着前视图中的每一竖立方体的高度最好都要被右视图中的高度所利用到.所 ...

  2. js计时函数实现秒表的开始-暂停-清零功能

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. CCF-201512-1-数位之和

    问题描述 试题编号: 201512-1 试题名称: 数位之和 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个十进制整数n,输出n的各位数字之和. 输入格式 输入一个整 ...

  4. Linux磁盘分区(二):删除

    ***********************************************声明************************************************ 原创 ...

  5. 浅copy 与 深copy

    import copy names = ["zhangyang", 'guyun', 'xiangpeng', ['jack','tom'], 'xuliangchen'] nam ...

  6. Python的字符编码

    Python的字符编码 1. Python字符编码简介 1. 1  ASCII Python解释器在加载.py文件的代码时,会对内容进行编码,一般默认为ASCII码.ASCII(American St ...

  7. AspNet Core 程序写入配置信息并再次读取配置信息

    1.首先创见Core控制台应用程序  并且引入  AspNetCore.All 首先我们写入配置信息:直接代码如下 //配置信息的根对象 public static IConfigurationRoo ...

  8. 关于 AspNet Core 的配置文件 与VS2017 安装

    下面链接 是VS2017 安装EXE 我现在装过了就不去截图演示了,有哪位不理解的可以@我. 链接:https://pan.baidu.com/s/1hsjGuJq 密码:ug59 1.今天我给大家带 ...

  9. http请求报文格式和响应报文格式

    转载 出处 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议.HTTP 是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求 ...

  10. Effective Java 第三版——1. 考虑使用静态工厂方法替代构造方法

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...