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

使用说明

  • 前提: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. JavaScript各种继承方式和优缺点

    好久没写博客啦,嘻嘻,这个月是2017年的最后一个月啦,大家应该都开始忙着写年终总结了吧,嘻嘻,小颖今天给大家分享下Javascript中的几种继承方式以及他们的优缺点. 1.借助构造函数实现继承 原 ...

  2. 洛谷教主花园dp

    洛谷-教主的花园-动态规划   题目描述 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都不一样,一些树可能会因为不适合这个位置的土壤而损失观赏价 ...

  3. Java数据结构和算法(七)——链表

    前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷.在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造 ...

  4. 基于TCP协议的socket编程

    什么是socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面, ...

  5. 【NOIP2012提高组】同余方程

    https://www.luogu.org/problem/show?pid=1082 方程可化为ax+by=1. 用扩展欧几里得算法得到ax'+by'=gcd(a,b)的一组解后,可得x=x'/gc ...

  6. Model中内部类meta详解

    Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性. 以下对此作一总结: Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项 ...

  7. object-fit?

    知道有这个属性存在,是一个很偶然的机会.有一天,设计部的一个小伙伴给了我一个网址,说很有个性,让我看一下,当发现一个很有意思的效果时,作为一个前端小兵的我当然是第一时间开始审查元素,然后看到了这个从没 ...

  8. extjs 关于dom操作的几个库

    经过几天的学习研究,发现ext与jquery的设计思路完全是来自两个方向. jquery是内聚,把所有东西都放在$的下面,而ext是采用分模块的设计思路,每个功能封装一个库.这样就形成了各自的实用风格 ...

  9. Loadrunner 中socket协议RecvBuffer接收到数据长度为空

    socket通讯,有两种方式,一种是建立长连接(TCP),建立后,不停的发送,接收.另外一种是建立短连接(UDP),建立连接,发送报文,接收响应,关闭连接.两种方式 server的开销不同. 今天出现 ...

  10. SourceTree 基本介绍

    Git的服务器端: 最出名的是GitHub,但是不能创建私有仓库,创建私有得需要Money Bitbucket:可以创建私有数据库,但是速度太慢,太消磨激情了 如果既想创建私有又想要激情,那只能自己搭 ...