【直播】三剑客实战Nginx日志分析

学习资料

  • 高级Bash脚本编程指南
  • LINUX与UNIX SHELL编程指南
  • 鸟哥的Linux私房菜
  • IBM DeveloperWorks
  • 阮一峰的《bash脚本教程》
  • Google

课程pdf

bash教程.pdf (7.0 MB)

演练服务器

shell编辑器

  • vs code
  • shell format插件

正则



演练文件

cp /tmp/nginx.log ~/nginx.log

使用less命令替代more与vim来分析文件内容,键入q表示退出交互浏览模式。

文件内容格式

223.104.7.59 - - [05/Dec/2018:00:00:01 +0000] "GET /topics/17112 HTTP/2.0"
 200 9874 "https://www.googleapis.com/auth/chrome-content-suggestions" "Mo
zilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15
(KHTML, like Gecko) CriOS/70.0.3538.75 Mobile/15E148 Safari/605.1" 0.040 0.040 .
123.125.71.60 - - [05/Dec/2018:00:00:02 +0000] "GET /yuanyibo/topics?locale=en HTTP/1.1" 200 12164 "-" "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" 0.032 0.032 .

IP 空 空 时间戳 用户请求(请求方法 地址 http协议版本) 状态码 字节数 Refer UserAgent 访问速度 访问速度 空

常用分析命令

  • less
  • sort
  • uniq

课间作业

  • 日志数据检索
  • 日志数据统计
  • 数据文件修改并统计

find_error_log

编写一个函数 find_error_log()
找出log中的404 500的报错 考察严谨性,某次训练没有一人做对

回复的时候按照这个格式

find_error_log() {
less nginx.log | grep -E '(" 404 |" 500 )'

less nginx.log | awk '$9~/404|500/'

}

find_top_3

找出访问量最高的ip, 统计分析,取出top3的ip和数量,打印出来。把函数和执行结果贴到回复里。记得使用代码格式化


find_top_3(){

}

url_avg_time

找出首页访问 / 的平均响应时间,把函数与结果打印出来贴到回复里

首页访问示例,get后面的地址是/,每次访问的响应时间是倒数第二个字段

136.243.151.90 - - [05/Dec/2018:00:00:51 +0000] "GET / HTTP/1.1" 200 10088 "-" "Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)" 0.078 0.078 .
url_avg_time(){

}

课后作业 url_summary

找出访问量最高的页面地址 借助于sed的统计分析

  • /topics/16689/replies/124751/edit 把数字替换为 /topics/int/replies/int/edit
  • /_img/uploads/photo/2018/c54755ee-6bfd-489a-8a39-81a1d7551cbd.png!large 变成 /_img
    /uploads/photo/2018/id.png!large
  • /topics/9497 改成 /topics/int
  • 其他规则参考如上

输出

  • url pattern对应的请求数量
  • 取出top 10请求量的url pattern

类似
288 url1
3000 url2

url_summary(){

}

上课打卡 :grinning:

滴~打卡 :laughing:

上课打卡 :grinning:

大卡

坚持跟课第一天

grep -E '404 | 500' nginx.log

find_error_log(){
grep -E ‘404 | 500’ nginx.log
}

grep -E ‘\s500\s | \s403\s’ nginx.log

cat nginx.log | grep -E ‘404|500’ | awk -F ’ ’ ‘{print $9}’ |sort

find_error_log(){
grep -E ‘404|500’ nginx.log
}

find_error_log() {
grep ‘404|500’ nginx.log
}

find_error_log(){
less nginx.log | grep -E '^404$ | ^500$' 
}
find_error_log(){
grep -E ' 404 | 500' nginx.log
}

find_error_log() { grep -nE ‘(404|503)’ nginx.log; }
find_error_log

find_error_log() {
grep -E ‘404|500’ nginx.log
}
    grep -E ‘\b404\b|\b500\b’ nginx.log

cat nginx.log |grep -E ‘404|500’

grep -E ' 404 | 500 ' nginx.log

123.127.112.18 - - [05/Dec/2018:00:06:03 +0000] "GET /cable HTTP/1.1" 101 903 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" 61.404 61.404

1 个赞