发表于: 2017-06-29 22:20:16

3 1370


今天完成的:任务7:查看Resin日志,统计访问DB时间,Controller处理时间


收获:

看师兄的日报找了一个shell脚本。

#!/bin/bash

echo  "访问student接口的次数为:"

num= cat access.log |grep student |wc -l

echo "其中20ms内的有: $num20"

num20= cat access.log |grep student |awk '{print $1,$19}' |awk '{print substr($2,4)}' |awk '{if($1<0.020)print $1}'  |wc -l

echo "其中10ms内的有:$num10"

num10= cat access.log |grep student |awk '{print $1,$19}' |awk '{print substr($2,4)}' |awk '{if($1<0.010)print $1}' |wc -l

百度了一下:

Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。

#!/bin/bash调用该目录下的bash执行该脚本,类似一个声明。

cat access.log 显示该文档。grep student 正则表达式匹配student。wc -l显示行数。返回的即是访问相关接口的次数。

awk '{print $1,$19}'意思是选取域1和于19之间的区域。awk中以一个空格作为分隔符,分割成两个域。

过之后,发现这个脚本会报错。换了一个。

修改nginx日志格式,在http里添加如下:
log_format  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent $request_body "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"'
                     '$upstream_addr $upstream_response_time $request_time ';
然后修改对应的server配置:
access_log  /data/wwwlogs/access_api.log;
分析日志,查找响应时间大于0.02秒的请求的shell脚本:
cat access_api.log | awk '($NF>0.02){print $6 " " $7 " " $8 " " $11 " " $NF}' > c.txt
awk有内置的变量。对于每一个记录,即行,分隔空白字符分隔记录默认情况下,它存储在$ n个变量。如果该行有4个词,它会被存储在$1,$2,$3和 $4。$0表示整行。
NF是一个内置变量,它代表这一行有多少个被分隔的域。


遇到的问题:

1.中间出了一个小问题,即访问get/#{id}的时候该访问没有加入access日志。后来发现是由于地址栏自动补全,默认直接访问tomcat
的8080端口,而没有通过nginx的80端口,把端口改成80即可。

2.修改了一下nginx输出日志的位置access.log,重新载入配置文件之后竟然找不到了,改回原来的位置,还是找不到。很头疼。

今天效率确实低,总是在修改bug,linux下配置起来老是出问题。。明天无论如何一定要把任务3解决掉。



返回列表 返回列表
评论

    分享到