linux awk nginx日志分析,awk分析nginx日志中的网页响应时间
nginx日志可以十分方便的看到每一個(gè)請(qǐng)求的響應(yīng)速度,通常我會(huì)用awk去分析這些請(qǐng)求耗時(shí)。通常nginx的log配置是這樣的
log_format access_comment '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for '
'$upstream_response_time $request_time';
我們記錄的日志類似于這樣
127.0.0.1 - - [15/Feb/2017:10:30:19 +0800] "POST /get" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36" 111.111.111.111, 10.0.0.0 0.007 0.007
響應(yīng)時(shí)間是最后一個(gè)。
awk的工作原理是讀出一行數(shù)據(jù),然后根據(jù)指定的分隔符對(duì)行進(jìn)行分割,放到序號(hào)變量里面,默認(rèn)是按照空格分割,比如$1是127.0.0.1,$2是-…
然而按照空格分割的話,這里有一個(gè)不確定的因素,就是http_user_agent,這個(gè)里面的空格是不確定的,因此沒有一個(gè)固定的序號(hào)變量來保存響應(yīng)時(shí)間。
不急,awk提供了一個(gè)非常好的內(nèi)置變量NF,NF保存了當(dāng)前分割出來的字段總數(shù),那么最后一個(gè)則是$(NF),這樣我們就能得到日志里面的響應(yīng)時(shí)間。
命令如下
$ tail -f /data/logs/nginx/access.log | awk '{print $(NF)}'
實(shí)際應(yīng)用中路徑需要你記錄nginx日志的路徑。
同樣我們還可以分析最近請(qǐng)求的平均耗時(shí),使用NR,NR是已經(jīng)讀取的行數(shù)
tail -f /data/logs/nginx/access.log | awk 'BEGIN{FS=" ";count=0} {count+=$(NF); print (count/NR),"\t",$(NF)}'
贊賞
總結(jié)
以上是生活随笔為你收集整理的linux awk nginx日志分析,awk分析nginx日志中的网页响应时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: element自定义el-dialog标
- 下一篇: nginx转发mysql连接