shell分析http日志
http状态码
1字头----信息,服务器收到请求,需要请求者继续执行操作
2字头----成功,操作被成功接收并处理
3字头----重定向,需要进一步的操作以完成请求
4字头----客户端错误,请求包含语法错误或无法完成请求
5字头----服务器错误,服务器在处理请求的过程中发生了错误
应用日志分析脚本
cat /usr/local/nginx/logs/access.log | awk '{print $1}' | sort | uniq -c | sort -rn
sort
选项与参数:
-f :忽略大小写的差异,例如 A 与 a 视为编码相同;
-b :忽略最前面的空格符部分;
-M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法;
-n :使用『纯数字』进行排序(默认是以文字型态来排序的);
-r :反向排序;
-u :就是 uniq ,相同的数据中,仅出现一行代表;
-t :分隔符,默认是用 [tab] 键来分隔;
-k :以那个区间 (field) 来进行排序的意思
uniq
选项与参数:
-i :忽略大小写字符的不同;
-c :进行计数
-u :只显示唯一的行
提取状态码
cat /usr/local/nginx/logs/access.log | awk '{print $9}'
提取想要的信息
cat /usr/local/nginx/logs/access.log | grep -ioE "HTTP\/1\.[1|0]\"[[:blank:]][0-9]{3}"
grep参数详解
-i 忽略大小写
-o 只输出文件中匹配到的部分
-E 进行精确的
特殊符号 代表意义
[:alnum:] 代表英文大小写字节及数字,亦即 0-9, A-Z, a-z
[:alpha:] 代表任何英文大小写字节,亦即 A-Z, a-z
[:blank:] 代表空白键与 [Tab] 按键两者
[:cntrl:] 代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等
[:digit:] 代表数字而已,亦即 0-9
[:graph:] 除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键
[:lower:] 代表小写字节,亦即 a-z
[:print:] 代表任何可以被列印出来的字节
[:punct:] 代表标点符号 (punctuation symbol),亦即:" ' ? ! ; : # $...
[:upper:] 代表大写字节,亦即 A-Z
[:space:] 任何会产生空白的字节,包括空白键, [Tab], CR 等等
[:xdigit:] 代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字节