严格来说是四剑客 awk sed grep 和 find,在配合linux基础命令,对您的网站运行状况进行有效分析,对于运维来说更是事半功倍,后期可以对数据进行可视化,比如看看站点访问量,进行用户简单的画像(年龄、性别、移动端类型,地区,等等),另外对于安全也是很有必要的,所以今天咱们就来一起来试试。
本文参考 shell在手分析服务器日志不愁? 作者:Panda
还可以使用goaccess 开源工具来完成,更高级的可以使用 elkstack日志解决方案
1、统计访问网站前十的ip地址
awk '{print $1}' |sort|uniq -c|sort -nr |head -10 access_log
2、查看某段时间有多少IP访问:{比如2019年1月15日14点一个小时内}
awk '{print $4,$1}' log_file | grep 15/Jan/2019:14 | awk '{print $2}'| sort | uniq | wc -l
3、查看某一个页面被访问的次数:
grep "/index.php" log_file | wc -l
4、查看每一个IP访问了多少个页面:
awk '{++S[$1]} END {for (a in S) print a,S[a]}' log_file > log.txt
sort -n -t ' ' -k 2 log.txt 配合sort进一步排序
5、查看某一个IP访问了哪些页面:
grep ^80.82.78.50 www.yilongzc.com.log| awk '{print $1,$7}'
6、统计访问次数最多的10个文件或页面
cat www.yilongzc.com.log|awk '{print $7}'|sort|uniq -c|sort -nr | head -10
#跟进您日志的格式,判断awk的取值
7、统计网站访问量
cat www.yilongzc.com.log|wc -l
8、统计404的连接
awk '($9 ~/404/)' access.log | awk '{print $9,$7}' | sort
9、用tcpdump嗅探80端口的访问看看谁最高
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -n
10、查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
11、每秒并发
watch "awk '{if($9~/200|30|404/)COUNT[$4]++}END{for( a in COUNT) print a,COUNT[a]}' log_file|sort -k 2 -nr|head -n10"
12、查看Web服务当前并发访问数
netstat -an | grep ESTABLISHED | wc -l
13、列出最耗时的一百个PHP页面
cat log_file |awk '($7~/.php/){print $NF " " $1 " " $4 " " $7}'|sort -nr|head -100
#($7~/.php/) $7里面包含.php的就输出
14、统计http status
cat access.log |awk '{counts[$(9)]+=1}; END {for(code in counts) print code, counts
}'
cat access.log |awk '{print $9}'|sort|uniq -c|sort -rn
- QQ精品交流群
-
- 微信公众号
-