网站首页 > 基础教程 正文
1.背景
最近网站数据库性能很不稳定,查询性能在某段时间很慢,服务器CPU也很高,平常时间很低,感觉被爬虫恶意搞了,因此我分析了一下最近的nginx访问日志
2.方法
找出访问量最大20个ip
[root@100 nginx]# cat liuhaihua.access.log | awk -F " " '{print $1}' |sort |uniq -c |sort -rn|head -n 20
217636 47.76.99.127
217605 47.76.209.138
39006 66.249.74.72
38747 66.249.71.40
33965 216.244.66.244
29643 66.249.74.73
29207 14.153.238.144
28882 129.211.163.247
28485 14.155.183.120
23862 66.249.79.167
21645 14.153.233.199
19477 66.249.74.74
18979 14.155.230.15
17436 66.249.71.41
14782 66.249.69.35
13284 47.94.150.2
12954 66.249.70.71
12742 14.155.204.218
12728 14.153.241.201
解释:uniq的一个特性,检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的;所以需要先进行排序,然后进行统计,再进行逆向排序。
参数解读:
sort:
-r:逆序输出排序结果
-n:根据字符串数值比较
uniq:从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
-c:在每行前加上表示相应行目出现次数的前缀编号
查询某个IP的详细访问情况,按访问频率排序
[root@100 nginx]# grep '47.76.99.127' liuhaihua.access.log |awk '{print $7}'|sort |uniq -c |sort -rn |head -n 100
1641 /archives/497017.html
1038 /archives/503168.html
238 /
156 /js/libs/jquery-confirm.min.js
147 /js/libs/jquery.lazyload.min.js
142 /js/libs/nprogress.min.js
142 /js/libs/jquery.fancybox.min.js
141 /js/zhyd.js
.....................
查看这个ip今天出现的次数
grep "47.76.99.127" /var/log/nginx/liuhaihua.access.log | grep "$(date +%d/%b/%Y)" | awk -F'"' '{print $2}' | awk '{print $2}'
这个命令的作用是:
- grep "47.76.99.127":过滤出包含该IP地址的日志行。
- grep "$(date +%d/%b/%Y)":进一步过滤出包含今天日期的日志行。
- wc -l:统计这些行的数量。
查看这个IP今天访问的路径
grep "47.76.99.127" /var/log/nginx/liuhaihua.access.log | grep "$(date +%d/%b/%Y)" | awk -F'"' '{print $2}' | awk '{print $2}'
这个命令的作用是:
- grep "47.76.99.127":过滤出包含该IP地址的日志行。
- grep "$(date +%d/%b/%Y)":进一步过滤出包含今天日期的日志行。
- awk -F'"' '{print $2}':提取出请求行(通常是第二个字段)。
- awk '{print $2}':从请求行中提取出请求的URL路径(通常是第二个字段)。
图形化nginx访问日志神器
安装
yum install goaccess
命令查看
goaccess liuhaihua.access.log
生成静态文件
goaccess liuhaihua.access.log -o report.html --log-format=COMBINED
- 上一篇: js-ES6 完全使用手册
- 下一篇: js数组方法笔记
猜你喜欢
- 2024-12-14 js数组方法笔记
- 2024-12-14 Cash:Javascript打造的Unix Shell
- 2024-12-14 js-ES6 完全使用手册
- 2024-12-14 开发技巧汇总|对于imag.js你不知道的事
- 2024-12-14 JS基本数据类型BigInt
- 2024-12-14 JavaScript数组用法
- 2024-12-14 简单几步让你的 JS 写得更漂亮
- 2024-12-14 第29节 原型prototype-Javascript-零点程序员-王唯
- 2024-12-14 五十四、最基础的冒泡排序
- 2024-12-14 JavaScript 常用功能总结
- 05-27是时候使用iframe延迟加载来提升LCP!
- 05-27页面卡顿到崩溃?5 个实战技巧让前端性能飙升 80%!
- 05-27前端人必看!10 个实战优化技巧,让项目性能直接起飞!
- 05-27快速了解JavaScript的表单操作
- 05-27来了!JavaScript 最强大的 8 个 DOM API
- 05-27如何使用 ChatGPT 进行抓取
- 05-27Pyppeteer爬虫神器详解
- 05-27《高性能JavaScript》学习笔记——日更中
- 最近发表
- 标签列表
-
- jsp (69)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- pythonif (86)
- location.href (69)
- dockerexec (65)
- tail-f (79)
- queryselectorall (63)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)