zoukankan      html  css  js  c++  java
  • Tomcat日志分析

      1 #!/bin/bash
      2 #Shell      statistics.sh
      3 #Author    lipc
      4 #Date      20200818
      5 #Ps       tomcat接入日志分析,需要tomcat日志开启访问时间记录
      6 
      7 time1=$(date "+%Y-%m-%d %H:%M:%S")
      8 time2=$(date "+%Y-%m-%d-%H")
      9 echo "请输入日志路径,例如:/tmp/localhost_access_log.2020-12-19.txt"
     10 read name
     11 echo "请输入日志存放路径,例如:/tmp/test/"
     12 read dir
     13 echo "请输入模块名称,例如:pbs"
     14 read module
     15 log="$dir""$module"$time2.log
     16 statistics="$dir""$module"statistics$time2.log
     17 IFS=$'
    '
     18 
     19 function check() {
     20     if [ -f $name ]; then
     21         echo $name'文件目录检测成功'
     22         echo ""
     23         echo "程序开始时间:"$time1 >>$statistics
     24         echo "正在收集URL接口信息,预计一分钟,请等待......"
     25         meta=$(cat $name | awk '{print $7}' | awk -F 'sig' '{print $1}' | sort | uniq | grep -v -w '/' | grep -v 400)
     26         amount=$(echo "$meta" | wc -l)
     27         echo "URL接口信息收集完成,即将开始下一步操作......"
     28         echo ""
     29     else
     30         echo $name'文件目录检测失败,请重新检查文件路径'
     31         exit 1
     32     fi
     33 }
     34 
     35 function metadata() {
     36     echo "正在收集日志元数据,用于后续统计分析操作,日志存放于$log......"
     37     i=0
     38     for url in $meta; do
     39         w=$(expr $i * 100 / $amount)
     40         echo "当前进度$w%"
     41         for time in $(seq -w 07 16); do
     42             num=$(cat $name | grep 2020:$time | grep $url | wc -l)
     43             echo $num $url 2020:$time >>$log
     44         done
     45         i=$(expr $i + 1)
     46     done
     47     echo "日志元数据收集完毕,存放于$log"
     48     echo ""
     49 }
     50 
     51 function concurrent() {
     52     echo "正在分析日志元数据,用于获取接口并发信息,日志存放于$statistics......"
     53     echo "每个接口的5个最高并发时段" >>$statistics
     54     for url in $meta; do
     55         cat $log | grep $url | sort -nr | head -n 5 >>$statistics
     56         echo "" >>$statistics
     57     done
     58 
     59     echo "全天最高并发的5个接口" >>$statistics
     60     for url in $meta; do
     61         a=$(cat $name | grep $url | wc -l)
     62         echo $a $url >>"$dir"a.log
     63     done
     64     cat "$dir"a.log | sort -nr | head -n 5 >>$statistics
     65 }
     66 
     67 function speed() {
     68     echo "正在分析接口耗时信息......"
     69     echo "" >>$statistics
     70     echo "全天10个最高耗时请求:" >>$statistics
     71     echo "" >>$statistics
     72     for url in $meta; do
     73         cat $name | grep $url | sort -nr -k 11 | head -n 1 >>"$dir"b.log
     74     done
     75 
     76     cat "$dir"b.log | sort -nr -k 11 | head -n 10 >>$statistics
     77     echo " " >>$statistics
     78     meta1=$(cat "$dir"b.log | sort -nr -k 11 | head -n 10 | awk '{print $7}' | awk -F 'sig' '{print $1}' | grep -v -w '/' | grep -v 400)
     79 
     80     echo "分析每个接口3个最高耗请求和3个最低耗请求,及其时间:" >>$statistics
     81     echo "" >>$statistics
     82     for url in $meta1; do
     83         echo "$url接口3个最高耗请求,及其时间:" >>$statistics
     84         cat $name | grep $url | sort -nr -k 11 | head -n 3 >>$statistics
     85         echo "$url接口3个最低耗请求,及其时间:" >>$statistics
     86         cat $name | grep $url | sort -nr -k 11 | tail -n 3 >>$statistics
     87         num2=$(cat $name | grep $url | awk '{print $11}' | awk '{sum+=$1} END {print "Average = ", sum/NR}')
     88         echo "$url接口平均耗时:"$num2 ms >>$statistics
     89         echo " " >>$statistics
     90     done
     91     echo "接口耗时信息分析已结束......"
     92 }
     93 
     94 function peak() {
     95     echo "正在分析接口高峰时段信息......"
     96     echo "本次日志分析,接口高峰时段时间" >>$statistics
     97     cat $statistics | awk '{print $3}' | grep 2020 | sort | uniq -c | sort -nr | head -n 6 >>$statistics
     98 }
     99 
    100 check
    101 metadata
    102 concurrent
    103 speed
    104 
    105 time3=$(date "+%Y-%m-%d %H:%M:%S")
    106 echo "程序结束时间:"$time3 >>$statistics
    107 echo "本次分析结束"
  • 相关阅读:
    js数组基础
    JavaScript原型链
    js之promise讲解
    ajax登录验证-js
    js事件委托
    js中的回调函数的理解和使用方法
    js闭包的理解
    JavaScript是如何实现继承的(六种方式)
    js创建对象的几种常用方式小结
    canvas绘图详解-08-样式填充
  • 原文地址:https://www.cnblogs.com/Leonardo-li/p/13525216.html
Copyright © 2011-2022 走看看