shell分析nginx日志
嘻嘻发布于2020-03-08
最后更新于2020年2月28日
浏览在做服务端的过程中,经常需要分析日志的数据,使用专业的工具又没有必要。使用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