分析日志不用愁,shell命令来解决

分析日志不用愁,shell命令来解决


​ 自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑阔搞破坏;于是收集整理一些服务器日志分析命令;;;

​ 以Nginx 为例

1、查看有多少IP地址访问

awk '{print $1}' access.log | sort | uniq | wc -l

awk '{print $1}' 文本处理,输出第一段(IP地址)

access.log 处理的日志

sort 对上一段输出结果排序

uniq 去重

wc -l 对行数统计

2、查看某一个页面被访问的次数

grep 'index.html' access.log | wc -l

grep 'index.html' 所要检索的页面

wc -l 统计数

3、查看每一个IP访问了多少个页面

awk '{++S[$1]} END {for (a in S) print a,S[a]}' access.log > log.txt

++S[$1] END 数组,将第一段进行统计,字典的方式统计 Key=Value 例如: 某一个有几个 127.0.0.1 10

{for (a in S} 遍历整个数组,a 将遍历 S 整个数组的 Key

print a,S[a] 输出变量中的内容,a Key IP地址, S[a] 字典变量,引用a 输出对应的Value

查看

sort -n -t ' ' -k 2 log.txt

-n 进行排序

-t 指定间隔符

-k 2 针对第二列进行排序

4、将每个页面访问的数量从大到小排序

awk '{++S[$1]} END {for (a in S) print S[a],a}' access.log | sort -n

5、查看某一个IP访问了那些页面

grep '106.12.223.228' access.log | awk '{print $1,$7}' | more

6、去掉搜索引擎统计的页面

awk '{print $12,$1}' access.log | grep ^\'Mozilla | awk '{print $2}' | sort | uniq | wc -l

7、查询某一个时间段有多少IP访问

awk '{print $4,$1}' access.log | grep 16/Aug/2020:14 | awk '{print $2}' | wc -l

8、查看访问前十的IP

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

uniq -c 去重后,显示该字段的重复值为多少

sort -nr 将其进行排序,默认是从小到大,r 拍反序

9、访问次数最多的 10个文件或者页面

awk '{print $11}' access.log  | sort | uniq -c | sort -nr | head -10
访问量最大的前20个ip
awk '{print $1}' access.log | sort -nr | uniq -c | sort -nr |  head -20

第一次排序是根据 IP地址进行的排序,uniq -c 去重统计之后,还需重新排序

10、通过子域名访问次数,一句 referer 来计算

cat access.log | awk '{print $11}' | sed -e ' s/http:\/\///' -e ' s/\/.*//' | sort | uniq -c | sort -nr | head -20

11、列出传输大小最大的的几个文件

cat access.log | awk '($7~/\.*/){print $10 " " $1 " " $4 " " $7}' | sort -nr | head -100

12、列出输出大于 200000byte(约200kb)页面以及对应页面发生的次数

cat access.log | awk '($10 > 200000 && $7~/\.*/){print $7}' | sort -n | uniq -c | sort -nr | head -100

13、列出当前服务去每一进程运行的数量

 ps -ef | awk -F ' ' '{print $8 " " $9}' | sort | uniq -c | sort -nr | head -20

14、查看Apache 的并发访问数

netstat -an | grep ESTABLISHED | wc -l

15、统计服务进程数

ps -ef|grep nginx |wc -l

grep 检索服务name

16、输出每个IP的连接数

netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n",a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值