Linux 基础实战(二)

nginx log 解析实战 (一)

找出所有404和500错误日志,统计错误日志行数

217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.51 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 500 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 0.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 404 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 200 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 200 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 200 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 200 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /topics HTTP/1.1" 500 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 2.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /topics HTTP/1.1" 200 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 11.53 A"
217.138.222.101 - - [11/Feb/2022:13:22:11 +0000] "GET /favicon.ico HTTP/1.1" 200 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 1.53 A"
217.138.222.100 - - [11/Feb/2022:13:22:11 +0000] "GET /topics HTTP/1.1" 200 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 0.51 A"
217.138.222.100 - - [11/Feb/2022:13:22:11 +0000] "GET /topics HTTP/1.1" 200 3650 "http://135.181.110.245/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.87 Safari/537.36 2.11 A"
  1. grep 前缀+关键字, egrep 代表或逻辑,一旦前缀不匹配会过滤bad case
  2. awk 结合grep 切割指定的列
  3. 单独用awk
cat nginx.log | egrep 'HTTP/1.1" 404|HTTP/1.1" 500' | wc -l
cat nginx.log | awk '{print $9}' | egrep '404|500' | wc -l
awk '$9~/400||500/ {print $9}' nginx.log | wc -l
awk '$9~/400||500/{t+=1}END{print t}' nginx.log

可以用less, /反例(200) 来测试上述脚本是否有bad case

cat nginx.log | awk '{print $9}' | egrep '404|500' | less
awk '$9~/400||500/ {print $9}' nginx.log | less

awk pattern

  • awk 理论上可以代替grep
  • awk ‘pattern{action}’
  • awk ‘BEGIN{}END{}’ 开始和结束
  • awk ‘/Running/’ 正则匹配
  • awk ‘/aa/,/bb/’ 区间选择
  • awk ‘$2~/xxx/’ 字段匹配
  • awk ‘NR==2’ 取第二行
  • awk ‘NR>1’ 去除第一行

nginx log 解析实战 (二)

找出url 访问量最高 前3个

less nginx.log |awk '{print $7}'| sort |uniq -c | sort -r |head -3

  7 /favicon.ico
  4 /favi/p4
  1 /favi/p3

awk 获取每列列号

取文件里第一行所有列, awk ‘NR==1{for(i=1;i<NF;i++) {print “line"i”:" $i}}’ nginx.log

awk 计算指定路径/topics 的平均响应时间(倒数第二列)

less nginx.log | awk '$7=="/topics"{total+=$(NF-1);i++}END{print total/i}'

$(NF) 最后一列,-1为倒数第二列
不建议用grep “/topics” 会过滤到一些脏数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值