三剑客实战Nginx日志分析


以下是nginx.log中的部分日志
在这里插入图片描述

1 提取nginx.log中的 404 和 500 报错的数目并打印**

1.1 grep用法

方法1:使用grep的-c参数

$grep -E -c ' 404 | 500 ' nginx.log 
267

分析:
’ 404 | 500 '是正则表达式,其中|代表或,所以要用到扩展正则:-E ,另外也可以写成-cE,如下:

$grep -cE ' 404 | 500 ' nginx.log 
267

方法2: 使用wc -l

$grep -E  ' 404 | 500 ' nginx.log | wc -l 
267

拓展:grep的-c 和wc -l是输出满足条件的行数,若一行当中有多个符合条件的404或500,那么统计方法有误,需要使用grep 的-o 是输出所有的匹配内容,然后再统计

$grep -E -c  -o  ' 404 | 500 ' nginx.log 
267

1.2 awk用法

$awk '$9~/404|500/'   nginx.log | wc -l
267

2 提取nginx.log中的访问量最多的三个ip地址

方法1:

$grep  -E    -o '^[0-9{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'  nginx.log  | sort | uniq  -c | sort -nr  | head -3
    282 216.244.66
    142 40.77.167
    130 136.243.151

方法2:

$grep  -E    -o '^[0-9{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}'  nginx.log  | sort | uniq  -c | sort -n  | tail  -3
    130 136.243.151
    142 40.77.167
    282 216.244.66

方法3:

$awk '{print $1}' nginx.log | sort | uniq -c | sort -nr | head  -3
    282 216.244.66.241
    130 136.243.151.90
    110 127.0.0.1
  • 正则匹配IP地址 ^[0-9{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}
  • sort 排序
  • uniq -c 去重并计数,因uniq检查重复时,只会检查相邻的行,所以要先sort
  • sort -nr -n按照数值大小排序,-r以相反的顺序排序
  • head -3 显示前3行
  • tail -3 显示后3行

3 将 nginx.log 中的topics/数字替换成固定值

 $sed  s#topics/[0-9]*#topics/number#g nginx.log | head -10
  • sed的替换命令s/ /g,其中/可以用其他字符来代替,比如#,为了区分替换的内容里的/

4 将IP地址横向打印

$awk '{print $1}'   nginx.log | sed ':1;N;s/\n/|/g;t1'
  • sed的工作模式是按行提取内容,忽略换行
  • N代表,把下面一行追加到此行,包含换行符
  • :1 和t1代表打一个标记为1,t1跳转到标记处,相当于一直进行N;s/\n/|/g 这个操作,其中1可以写成其他值
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值