shell分析nginx日志

在做服务端的过程中,经常需要分析日志的数据,使用专业的工具又没有必要。使用shell分析日志是一个不错的选择,这里涉及的命令包括grep,zgrep,cat,zcat, xargs。

grep和zgrep

grep和zgrep都是用来在文件中查询文本,其中grep对应普通的文本文件,而zgrep对应是.gz的压缩文件。

grep -nr "world" *.log
zgrep -e "GET /api" *.gz

cat和zcat

cat和zcat可以将文件的内容输出,cat对应不同文件,zcat对应压缩文件。

cat access.log | more
zcat access.1.gz | more

日志分析

先看下面这个命令

ls *access*.gz | xargs -I {} zgrep -E "/api/recommend.+utm_source=worlds[1|3|5|6|7|8]?" {} | grep "22/Feb/2020" | wc -l 

功能统计API接口的在2020.2.22的访问次数。

sed和awk

结合这两个命令shell可以做更复杂的日志分析。
一些例子:

#查看当天访问页面排前10的
$ grep -rn   access.log | awk '{print $7}' | sort | uniq -c | sort -nr | head -n 10
#当天ip连接数,统计ip地址的总连接数
$ grep -rn   access.log | awk '{print $1}' | sort | uniq -c | sort  -nr 
#统计安卓或iPhone访问次数
grep -rn   access.log|grep iPhone |awk '{print $1}'|sort |uniq -c|sort -nr
Curl命令来访问Elasticsearch?
js兼容性查询网站:caniuse