编程技术分享平台

网站首页 > 技术教程 正文

分享一个实用脚本获取access.log的请求url和查其中最耗时的接口

xnh888 2024-10-14 19:45:42 技术教程 18 ℃ 0 评论

概述

今天讲下tomcat访问日志方面的内容,会比较杂,主要是关于access.log一般会去怎么配置和获取什么信息。下面介绍访问日志的配置、通过脚本查访问日志得到所有请求的url,还有通过访问日志来查看前30条访问比较慢的接口。


tomcat访问日志配置

tomcat访问日志格式配置,在config/server.xml里Host标签下加上

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
 prefix="localhost_access_log." suffix=".txt"
 pattern="%h %l %u %t "%r" [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />

在日志文件中将看到如下文本:

10.217.14.16 - - [21/Oct/2018:15:48:54 +0800] "POST /updates/related_notice_num.json HTTP/1.0" [channel=App Store&gid=92391918-2173-4A66-8B31-B2FB3F8FB3DF&os=2&plat=2&sver=10.000000&token=MzM1OTc0MjQ1MkB3ZWliby55bXguY29tfHdlaWJvfDQ5ZGFmMjk0YjQ5YWQxMTZiZjBmYWM4ZDdhYzg3ZWQ0&ua=&ver=4.2.1] 200 - AllApp/4.2.1 (iPhone; iOS 10.0.2; Scale/3.00) 0.004 91

参数说明:


获取url脚本内容

#! /bin/bash
#执行本脚本,可以得到tomcat access.log所有的url
DIR_NAME="/home/tomcat8081/logs/"
REPORT_FILENAME="/opt/url.txt"
for line in `dir $DIR_NAME`
do
 line=${DIR_NAME}${line}
 echo current file is $line
 cat $line | awk {'print "http://"substr($6,0,length($6)-1)'} >> $REPORT_FILENAME
done

执行脚本

chmod u+x tomcat_access.sh
./tomcat_access.sh

查看前二十行内容:head -n 20 url.txt

查看最耗时的接口

命令如下:

cat /home/tomcat8081/logs/localhost_access_log.2018-03-27.txt | awk '{print $(NF-1)" "$0}' | sort -n -r| awk '{$1="";print $0}'

说明:因为日志倒数第二列显示的访问时间,所以按照倒数第二列由大到小显示接口以及访问时间。这样我们就能找出接口口耗时较大,然后对其进行优化,提高用户体验。


掌握上面内容,tomcat access.log方面就七七八八了,建议大家生产环境也这样配置,这些信息对于我们调优和排错是有用的。同样道理,nginx的access.log也可以考虑怎么配置,一通百通。

后面会分享更多关于devops和DBA方面内容,感兴趣的朋友可以关注下!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表