Linux实战Nginx日志分析及性能统计

定义函数

  • 定义函数格式:函数名(){ linux命令;}
  • 注意: { linux命令;}中花括号内部与命令行有空格,命令末尾有分号
  • 调用函数直接输入函数名即可
  • 要打印函数类型可以使用: type函数名
    image.png

1、查找Nginx日志中访问量top3的ip

find_top_3ip(){ awk '{print $1} ' nginx.log | sort | uniq -c | sort -nr | head -3; }
  • find_top_3ip 为函数名;
  • awk '{print $1}': 输出ip列
  • sort: 先对ip列进行排序,
  • uniq -c: 对排序后的ip去重,-c加上该ip的个数
  • sort -nr: 对去重后的ip根据ip个数倒序排列,-n对数值排序(从大到小),-r倒序排列
  • head -3: 输出前三行

2、查找Nginx日志中状态码为404或5oo的行

find_error_log(){ awk '$9~/404 | 500/ {print $0} ' nginx.log; }
  • find_error_log:函数名
  • $9~:对第九列使用正则表达式
  • /404|500/:匹配404或者500

3、找出500错误时候的上下文,找出500错误记录的前一行与后一行

find_before_and_after(){ grep -E -C1 '\b500\b' nginx.log; }
  • find_before_and_after:函数名
  • -E: 使用正则表达式
  • -C1: 打印匹配行以及前后一行
  • -A1: 打印匹配行以及后一行
  • -B1: 打印匹配行以及前一行

4、找出/topics的平均响应时间,响应时间在倒数第二个字段

url_avg_time(){ awk '$7=="/topics"{print $(NF-1)}' nginx.log | awk '{sum+=$1}END{print sum/NR}'; }
image.png

url聚类

image.png
函数:
url_summary (){
awk '{print $7}' nginx.log | sed -E 's/[A-Za-z0-9\-]+\.png/id\.png/g;s/[A-Za-Z0-9\-]+\.jpg/id\.jpg/g;s/[A-Za-z0-9\-]+\.gif/id\.gif/g;s//[0-9]+/\/int/g;s/page\=[0-9]+/page=int/g;s/code\=[A-Za-z0-9]+/code\=id/g;s/state\=[A-Za-zO-9]+/state\=id/g;s/client_id=[A-Za-z0-9]+/client_idl=id/g' | sort / uniq -c | sort -rn | head -10
}
image.png
image.png

image.png

统计阿里云盾进程的性能,每1s统计一次,统计他的cpu、mem的利用率,用tab隔开,并在最后空出一行打印下两个指标的平均值

image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容