Linux三剑客对Nginx日志分析

日志数据检索

        1.找出log中的404和500的报错信息

        less logs.txt | awk '$9==404||$9==500 {print $0}' | wc -l

        less logs.txt | awk '$9~/404|500/ {print $0}' | wc -l

        ~为正则匹配符,~/404|500/表示正则匹配值为404或500的行

Linux三剑客对Nginx日志分析_第1张图片

        2.找出500报错时候的上下文

Linux三剑客对Nginx日志分析_第2张图片

日志数据统计

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

less logs.txt | awk '{print $1}' | sort | uniq -c | sort -rn | head -n 10

less logs.txt | awk '{print $1}' | sort | uniq -c | sort -rn | awk 'NR<10 {print $0}'

        sort | uniq -c是按照升序输出后去重统计重复的个数,uniq -c必须结合sort命令,因为,uniq -c 去重统计只能去重相邻的行,所以必须把重复的行先通过sort排列到一堆,然后去重.

Linux三剑客对Nginx日志分析_第3张图片

sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:
  sort [-bcfMnrtk][源文件][-o 输出文件]
        补充说明:sort可针对文本文件的内容,以行为单位来排序。

参数:
  -b   忽略每行前面开始出的空格字符。
  -c   检查文件是否已经按照顺序排序。
  -f   排序时,忽略大小写字母。
  -M   将前面3个字母依照月份的缩写进行排序。
  -n   依照数值的大小升序排序。
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
  -k  选择以哪个区间进行排序。

数据文件修改

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

Linux三剑客对Nginx日志分析_第4张图片

你可能感兴趣的:(Linux与Shell,nginx,linux)