jck28-lucio-【实战】三剑客实战之nginx日志分析实战

按要求找出需要的数据

编写一个函数 find_error_log(),找出log中的404和500的报错

find_error_log(){

your code here

}

## 找出访问量最高的ip,统计分析,取出top3

[jck287213@shell.ceshiren.com tless nginx.log | awk ‘{print $1}’|sort|uniq -c|sort -k 1 -nr|head -3

282 216.244.66.241

130 136.243.151.90

110 127.0.0.1

## 日志数据检索

找出 log 中的 404 500 的报错 考察严谨性,某次训练没有一人做对

[jck287213@shell.ceshiren.com tmp]$ grep -E ’ 404 | 500 ’ nginx.log |less(可能存在误报)

![|554x360](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps1.jpg)

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | grep -E " 404 | 500 "(可能存在误报)

![|554x270](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps2.jpg)

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | grep -E '" 404 | 500 '(带标记)

![|554x269](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps3.jpg)

1、整行匹配

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | grep -E ‘(" 400 |" 500 )’ |grep 500

![|554x46](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps4.jpg)

单个字段匹配

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | awk ‘$9~/404|500/{print $0}’|grep 500

![|554x48](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps5.jpg)

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | awk ‘$9~/404|500/’|grep 500

![|553x41](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps6.jpg)

3、找出404或者500的行

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | awk ‘$9==404 || $9==500’|grep 500

139.180.132.174 - - [05/Dec/2018:00:09:12 +0000] “GET /zep/js.zip HTTP/1.1” 500 2183 “-” “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36” 0.018 0.018 .

## 上下文检索

找出 500 错误时候的上下文 考察 grep 高级用法

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | grep -C1 " 500 "

![|554x92](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps7.jpg)

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | grep -C2 " 500 "

![|554x161](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps8.jpg)

## 日志数据统计

找出访问量最高的 ip 统计分析

[jck287213@shell.ceshiren.com tmp]$ less nginx.log | awk ‘{print $1}’|sort|uniq -c|sort -k 1 -nr|head

![|553x136](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps9.jpg)

## 数据文件修改

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

Awk pattern语法

awk ‘BEGIN{}END{}’ 开始与结束

awk ‘/Running/’ 匹配正则

awk ‘/aa/,/bb/’ 区间选择

awk ‘$2~/xxx/’ 字段匹配

awk ‘NR==2’ 取第二行

awk ‘NR>1’ 去掉第一行

![|297x266](file:///C:\Users\86159\AppData\Local\Temp\ksohtml11824\wps10.jpg)