2、具体nginx日志示例如下
注意日志中的列与日志格式中的列的对应关系;由于空格的存在,并不完全是一 一对应;
如:日志中的第一列是ip,对应 r e m o t e _ a d d r ;四、五两列是时间对应 [ remote\_addr;四、五两列是时间对应[ remote_addr;四、五两列是时间对应[time_local],第二列是“-”,第三列也是“-”对应 r e m o t e _ u s e r ( 信息为空则为“ − ” ) ,第六列是状态码对应 remote\_user(信息为空则为“-”),第六列是状态码对应 remote_user(信息为空则为“−”),第六列是状态码对应status,第七列是$host,等等
二、第二步,进入主题,开始分析,简单分析某一列的信息
- 统计访问次数据前10的ip,配合使用sort排序
[root@better~day /usr/local/nginx/logs]# awk '{sum[$1]++}END{for(ip in sum) print ip, sum[ip]}' access_1.log | sort -rn -k 2|head
100.97.90.67 2380
100.97.90.71 2375
100.97.90.84 2373
100.97.90.78 2363
100.97.90.89 2351
100.97.90.64 2344
100.97.90.75 2332
100.97.90.104 2329
100.97.90.96 2325
100.97.90.77 2325
awk ‘{sum[$1]++}END{for(ip in sum) print ip, sum[ip]}’ access_1.log | sort -rn -k 2|head
在此简要说明以下sort命令的参数,-r 逆序,从大到小,-n 已数值作比较,可以连写为-rn;
-k 2 根据第二列进行排序,第二列为sum[ip],即单个ip的访问量;
- for、if嵌套,统计访问量高于某个临界值的ip,例如大于2350
[root@better~day /usr/local/nginx/logs]# awk '{sum[$1]++}END{for(ip in sum)if(sum[ip]>2350) print ip, sum[ip]}' access_1.log | sort -rn -k 2
100.97.90.67 2380
100.97.90.71 2375
100.97.90.84 2373
100.97.90.78 2363
100.97.90.89 2351
- 统计各状态码的次数
[root@better~day /usr/local/nginx/logs]# awk '{sum[$6]++}END{for(status in sum)if(sum[status]>2300) print status, sum[status]}' access_1.log | sort -rn -k 2
200 324475
404 24623
302 16738
304 2836
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK
资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!**
详情docs.qq.com/doc/DSmdCdUNwcEJDTXFK