zoukankan      html  css  js  c++  java
  • 17项目实战_Nginx日志分析

    项目实战_Nginx日志分析

    日志格式分析

    日志格式(非默认)

    log_format  main   '"$http_x_forwarded_for" - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" $remote_addr $request_time';
    

    日志条目

    "-" - - [06/Jan/2020:18:02:29 +0800] "GET /public/IT服务平台/ HTTP/1.1" 200 1327 "http://172.22.23.11/public/IT服务平台/15-mac必备系统工具/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36" 172.22.101.160 0
    

    日志分析

    统计PV量

    # 统计2020年1月2日的PV量
    [root@centos11 ~]# grep '02/Jan/2020' /usr/local/nginx/logs/access_public.log | wc -l
    110
    
    # 统计2020年1月2日00:00:00~13:00:00这段时间内的PV量
    [root@centos11 ~]# awk '$4>="[02/Jan/2020:00:00:00" && $4<="[02/Jan/2020:13:00:00"{print $0}' /usr/local/nginx/logs/access_public.log | wc -l
    28
    

    统计一天内访问最多的10个IP

    # 统计2020年1月2日一天内访问最多的10个IP(top10)
    [root@centos11 ~]# grep '02/Jan/2020' /usr/local/nginx/logs/access_public.log | awk '{ips[$(NF-1)]++}END{for (i in ips){print i,ips[i]}}' | sort -k2 -rn | head -n10
    172.22.72.30 22
    172.22.50.237 16
    172.22.69.128 12
    172.22.225.131 8
    172.22.42.173 7
    172.22.85.68 6
    172.22.105.26 6
    172.22.70.155 5
    172.22.218.231 5
    172.22.108.52 5
    

    统计一天内访问大于n次的IP

    # 统计2020年1月2日访问大于10次的IP
    [root@centos11 ~]# grep '02/Jan/2020' /usr/local/nginx/logs/access_public.log | awk '{ips[$(NF-1)]++}END{for (i in ips){if(ips[i]>10){print i,ips[i]}}}' | sort -k2rn
    172.22.72.30 22
    172.22.50.237 16
    172.22.69.128 12
    
    # 只使用awk完成
    [root@centos11 ~]# awk '/02/Jan/2020/{ips[$(NF-1)]++}END{for (i in ips){if(ips[i]>10){print i,ips[i]}}}' /usr/local/nginx/logs/access_public.log | sort -k2rn
    172.22.72.30 22
    172.22.50.237 16
    172.22.69.128 12
    

    统计一天内访问最多的10个页面($request)

    # 统计2020年1月2日一天内访问最多的10个页面(top10)
    [root@centos11 ~]# awk '/02/Jan/2020/{urls[$7]++}END{for (i in urls){print urls[i],i}}' /usr/local/nginx/logs/access_public.log | sort -k1rn | head -n10
    13 /public/IT服务平台/
    10 /public/IT服务平台/03-办公软件/
    7 /public/PPT模板/ppt模板16X9纯净版.ppt
    5 /public/PPT模板/
    4 /public/PPT模板/ppt模板纯净版.ppt
    3 /public/IT服务平台/12-研发软件/
    3 /public/IT服务平台/12-研发软件/Java/
    3 /public/IT服务平台/25-客户端下载/
    3 /public/IT服务平台/26-NextCloud/Ios_sui_10.1.5_1022.ipa
    2 /public/IT服务平台/01-常用文档/
    
    # 统计2020年1月1日00:00:00~2020年1月7日00:00:00这段时间内访问最多的10个页面(top10)
    [root@centos11 ~]# awk '$4>="[01/Jan/2020:00:00:00" && $4<"[07/Jan/2020:00:00:00"{urls[$7]++}END{for (i in urls){print urls[i],i}}' /usr/local/nginx/logs/access_public.log | sort -k1rn | head -n10
    599 /public/IT服务平台/09-系统镜像/OS%20X%2010.11.1%2815B42%29.cdr
    274 /public/IT服务平台/
    91 /public/IT服务平台/03-办公软件/
    73 /public/IT服务平台/05-Polycom视频会议软件/RPDmac-release_3.2.1_48485.dmg
    46 /public/IT服务平台/12-研发软件/
    44 /public/IT服务平台/06-K3软件/K3CloudClientPortal.exe
    38 /public/IT服务平台/12-研发软件/Java/
    36 /public/IT服务平台/05-Polycom视频会议软件/Polycom%20RealPresence%20Desktop330.zip
    31 /public/IT服务平台/25-客户端下载/
    30 /public/IT服务平台/01-常用文档/
    

    统计每个URL访问内容总大小($body_bytes_sent)

    # 统计2020年1月2日一天内访问页面总大小最多的10个页面
    # 显示效果:页面总大小 url
    [root@centos11 ~]# awk '/02/Jan/2020/{size[$7]+=$10}END{for(i in size){print size[i],i}}' /usr/local/nginx/logs/access_public.log | sort -k1rn | head -n10
    714913792 /public/IT服务平台/03-办公软件/01-Office系列软件/Visio%202016/SW_DVD5_Visio_Pro_2016_64Bit_ChnSimp_MLF_X20-42759.ISO
    609447936 /public/IT服务平台/03-办公软件/01-Office系列软件/Visio%202016/SW_DVD5_Visio_Pro_2016_W32_ChnSimp_MLF_X20-41580.ISO
    299891682 /public/IT服务平台/26-NextCloud/Ios_sui_10.1.5_1022.ipa
    165674520 /public/IT服务平台/03-办公软件/03-Xmind/xmind-8-update8-windows.exe
    138681500 /public/IT服务平台/26-NextCloud/Andriod_sui_10.1.5_1032.apk
    121225744 /public/IT服务平台/06-K3软件/K3CloudClientPortal.exe
    75260160 /public/IT服务平台/03-办公软件/06-金蝶云/suiSetup_1.1.2_1022-win.exe
    70087283 /public/IT服务平台/06-K3软件/k3打印插件/K3Cloud打印插件.rar
    26376260 /public/PPT模板/ppt模板16X9纯净版.ppt
    8286208 /public/PPT模板/ppt模板4X3纯净版.ppt
    
    # 统计2020年1月2日一天内访问次数最多的10个页面
    # 显示效果:访问次数 页面总大小 url
    [root@centos11 ~]# awk '/02/Jan/2020/{urls[$7]++;size[$7]+=$10}END{for(i in size){print urls[i],size[i],i}}' /usr/local/nginx/logs/access_public.log | sort -k1rn | head -n10
    13 17223 /public/IT服务平台/
    10 5900 /public/IT服务平台/03-办公软件/
    7 26376260 /public/PPT模板/ppt模板16X9纯净版.ppt
    5 1430 /public/PPT模板/
    4 1853440 /public/PPT模板/ppt模板纯净版.ppt
    3 1080 /public/IT服务平台/12-研发软件/
    3 2325 /public/IT服务平台/12-研发软件/Java/
    3 299891682 /public/IT服务平台/26-NextCloud/Ios_sui_10.1.5_1022.ipa
    3 942 /public/IT服务平台/25-客户端下载/
    2 1142 /public/IT服务平台/01-常用文档/
    

    统计每个IP访问状态码数量($status)

    # 统计2020年1月2日一天内每个IP访问状态码数量
    [root@centos11 ~]# awk '/02/Jan/2020/{ips_code[$(NF-1)" "$9]++}END{for(i in ips_code){print i,ips_code[i]}}' /usr/local/nginx/logs/access_public.log | sort -k1rn | head -n10
    172.22.102.88 200 2
    172.22.105.26 200 6
    172.22.108.52 200 5
    172.22.218.231 200 5
    172.22.225.131 200 5
    172.22.225.131 206 3
    172.22.41.18 200 3
    172.22.42.173 200 7
    172.22.50.138 200 2
    172.22.50.217 200 4
    

    统计每个IP访问状态码为200的出现次数($status)

    [root@centos11 ~]# awk '/02/Jan/2020/{if($9=="200"){status[$(NF-1)" "$9]++}}END{for(i in status){print i,status[i]}}' /usr/local/nginx/logs/access_public.log | sort -k3rn | head -n10
    172.22.72.30 200 22
    172.22.50.237 200 16
    172.22.69.128 200 12
    172.22.42.173 200 7
    172.22.105.26 200 6
    172.22.85.68 200 6
    172.22.108.52 200 5
    172.22.218.231 200 5
    172.22.225.131 200 5
    172.22.70.155 200 5
    

    统计前n分钟的PV量

    # 介绍一下date的用法
    [root@centos11 ~]# date
    Mon Jan  6 21:16:47 CST 2020
    # 获取一分钟后的时间
    [root@centos11 ~]# date -d '1 min'
    Mon Jan  6 21:17:49 CST 2020
    # 获取一分钟前的时间: -1 min 或者 1 min ago
    [root@centos11 ~]# date -d '-1 min'
    Mon Jan  6 21:15:52 CST 2020
    [root@centos11 ~]# date -d '1 min ago'
    Mon Jan  6 21:15:55 CST 2020
    
    
    # 统计1分钟前的PV量
    [root@centos11 ~]# new_date=$(date -d '-1 minute' +%d/%b/%Y:%H:%M);awk -v date_new=$new_date '$0 ~ date_new {i++} END{print i}' /usr/local/nginx/logs/access_public.log
    

    统计某个时间段内,访问状态码为200

    # 统计2019年9月5日09:00-16:00,访问状态码为200的IP
    [root@centos11 ~]# awk '$4>="[02/Jan/2020:09:00:00" && $4<="[02/Jan/2020:16:00:00"{if($9=="200"){ip_code[$(NF-1)" "$9]++}}END{for(i in ip_code){print i,ip_code[i]}}' /usr/local/nginx/logs/access_public.log | sort -k3rn
    172.22.72.30 200 22
    172.22.50.237 200 16
    172.22.69.128 200 12
    172.22.85.68 200 6
    172.22.225.131 200 5
    172.22.70.155 200 5
    172.22.105.26 200 4
    172.22.50.217 200 4
    172.22.102.88 200 2
    172.22.72.23 200 2
    

    统计某个时间段内,各种状态码的数量

    # 统计2019年9月5日09:00-16:00,各种状态码的数量
    [root@centos11 ~]# awk '$4>="[02/Jan/2020:09:00:00" && $4<="[02/Jan/2020:16:00:00"{code[$9]++}END{for(i in code){print i,code[i]}}' /usr/local/nginx/logs/access_public.log
    200 78
    206 3
    
    [root@centos11 ~]# awk '$4>="[02/Jan/2020:09:00:00" && $4<="[02/Jan/2020:16:00:00"{code[$9]++;total++}END{for(i in code){printf i"	";printf code[i]"	";printf "%.2f",code[i]/total*100;print "%"}}' /usr/local/nginx/logs/access_public.log
    200	78	96.30%
    206	3	3.70%
    
    [root@centos11 ~]# awk '$4>="[02/Jan/2020:09:00:00" && $4<="[02/Jan/2020:16:00:00"{code[$9]++;total++}END{for(i in code){printf i"	";printf code[i]"	";printf "%.2f%
    ",code[i]/total*100}}' /usr/local/nginx/logs/access_public.log
    200	78	96.30%
    206	3	3.70%
    

    作业

    Nginx日志默认格式

    $remote_addr $1

    $time_local $4

    $request $7

    $status $9

    $body_bytes_sent $10

  • 相关阅读:
    今天的赢在中国推迟了,给大家推荐个视频,看看什么是真正的中华武术
    赢在中国080312
    盛大(上海)诚聘软件测试人员
    jQuery入门[2]-选择器
    阿里巴巴诚信通成为《赢在中国》的实战项目,要花多少钱?--《赢在中国》(20080408)
    唐僧晒书
    用于生成网页、WAP、JS中文编码的Unicode编码工具
    jQuery入门[5]-AJAX
    中国哲学(一)
    20071212公映的《色即是空2》(sex is zero 2)字幕文件
  • 原文地址:https://www.cnblogs.com/ElegantSmile/p/12370385.html
Copyright © 2011-2022 走看看