shell脚本-通过分析日志统计php接口耗时

#!/bin/bash

#获取时间

day=`date -d '-1 day ' +%Y%m%d`

excepttime=`date -d '-1 day ' +%Y-%m-%d`

echo "" > /root/tmptxt/time.txt
echo "" > /root/tmptxt/accesslist.txt

#获取接口

for project in NAME

do

#排除0-7点
cat "/data/logs/$project/$day.log" | grep -v "$excepttime 0[0-7]" > /root/tmptxt/except.txt

cat /root/tmptxt/except.txt | grep response | awk -F \:\: '{ print $8}' | awk -F \? '{printf $1 "\n"}'  | awk -F \& '{printf $1 "\n"}'| sort | uniq | grep -v ReadJpush >> /root/tmptxt/accesslist.txt

for access in `cat /root/tmptxt/accesslist.txt | grep -v test`

do

        curtime=`cat /root/tmptxt/except.txt  | grep response |  grep $access  | awk -F \:\: '{printf $7 " " $1 "\n"}' | awk '{printf $1 " " $2 "\n"}' | grep -v \- | awk 'BEGIN{sum=0;num=0}{sum+=$1;num+=1}END{printf ("%.3f %d",sum/num,num)}'`

        avgtime=`echo $curtime | awk '{printf $1}'`

        num=`echo $curtime | awk '{printf $2}'`

        idtime=`cat /root/tmptxt/except.txt  |  grep response |  grep $access  | awk -F \:\: '{printf $7 " " $1 "\n"}' | awk '{printf $1 " " $2 "\n"}' | grep -v \- | sort -nr | head -1| awk '{printf $2" " $1}'`

        id=`echo $idtime | awk '{printf $1}'`

        longtime=`echo $idtime | awk '{printf $2}'`
  	#只取大于0.5秒的
        if [[ `expr $avgtime \> 0.5` -eq 1 ]]

        then

        echo "$avgtime  $longtime   $num   $access   $id" >> /root/tmptxt/time.txt

        fi
done

echo "平均耗时 最长耗时 次数 接口地址  最长耗时接口ID" > /root/tmptxt/result.txt
cat /root/tmptxt/time.txt | sort -nr >> /root/tmptxt/result.txt

done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值