这里有新鲜出炉的 Nginx 中文文档,程序狗速度看过来!
Nginx 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。其将源代码以类 BSD 许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
这篇文章主要给大家总结了关于 Nginx 日志统计分析的一些常用命令,其中包括 IP 相关统计、页面访问统计、性能分析、蜘蛛抓取统计、TCP 连接统计等相关命令的总结,相信对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
本文主要给大家总结了关于 Nginx 日志统计分析的一些常用命令,分享出来供大家参考学习,下面来一起看看详细的介绍:
一、IP 相关统计
统计 IP 访问量
- awk '{print $1}'access.log | sort - n | uniq | wc - l
查看某一时间段的 IP 访问量 (4-5 点)
- grep "07/Apr/2017:0[4-5]"access.log | awk '{print $1}' | sort | uniq - c | sort - nr | wc - l
查看访问最频繁的前 100 个 IP
- awk '{print $1}'access.log | sort - n | uniq - c | sort - rn | head - n 100
查看访问 100 次以上的 IP
- awk '{print $1}'access.log | sort - n | uniq - c | awk '{if($1 >100) print $0}' | sort - rn
查询某个 IP 的详细访问情况, 按访问频率排序
- grep '104.217.108.66'access.log | awk '{print $7}' | sort | uniq - c | sort - rn | head - n 100
二、页面访问统计
查看访问最频的页面 (TOP100)
- awk '{print $7}'access.log | sort | uniq - c | sort - rn | head - n 100
查看访问最频的页面 ([排除 php 页面】(TOP100)
- grep - v ".php"access.log | awk '{print $7}' | sort | uniq - c | sort - rn | head - n 100
查看页面访问次数超过 100 次的页面
- cat access.log | cut - d ' ' - f 7 | sort | uniq - c | awk '{if ($1 > 100) print $0}' | less
查看最近 1000 条记录,访问量最高的页面
- tail - 1000 access.log | awk '{print $7}' | sort | uniq - c | sort - nr | less
每秒请求量统计
统计每秒的请求数, top100 的时间点 (精确到秒)
- awk '{print $4}'access.log | cut - c 14 - 21 | sort | uniq - c | sort - nr | head - n 100
每分钟请求量统计
统计每分钟的请求数, top100 的时间点 (精确到分钟)
- awk '{print $4}'access.log | cut - c 14 - 18 | sort | uniq - c | sort - nr | head - n 100
每小时请求量统计
统计每小时的请求数, top100 的时间点 (精确到小时)
- awk '{print $4}'access.log | cut - c 14 - 15 | sort | uniq - c | sort - nr | head - n 100
三、性能分析
在 nginx log 中最后一个字段加入 $request_time
列出传输时间超过 3 秒的页面,显示前 20 条
- cat access.log | awk '($NF > 3){print $7}' | sort - n | uniq - c | sort - nr | head - 20
列出 php 页面请求时间超过 3 秒的页面,并统计其出现的次数,显示前 100 条
- cat access.log | awk '($NF > 1 && $7~/\.php/){print $7}' | sort - n | uniq - c | sort - nr | head - 100
四、蜘蛛抓取统计
统计蜘蛛抓取次数
- grep 'Baiduspider'access.log | wc - l
统计蜘蛛抓取 404 的次数
- grep 'Baiduspider'access.log | grep '404' | wc - l
五、TCP 连接统计
查看当前 TCP 连接数
- netstat - tan | grep "ESTABLISHED" | grep ":80" | wc - l
用 tcpdump 嗅探 80 端口的访问看看谁最高
- tcpdump - i eth0 - tnn dst port 80 - c 1000 | awk - F "."'{print $1"."$2"."$3"."$4}' | sort | uniq - c | sort - nr
六、实例脚本
获取前一分钟 nginx 访问日志条数
- #!/bin/bash
- export LANG=C
- export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
- TIME=$(date -d "1 minute ago" +"%d/%h/%Y:%H:%M")
- grep "$TIME" /var/log/nginx/access.log | wc -l
获取前一分钟 nginx 错误日志条数
- #!/bin/bash
- export LANG=C
- export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
- TIME=$(date -d "1 minute ago" +"%Y-%m-%d %H:%M")
- grep "$TIME" /var/log/nginx/error.log | wc -l
总结
来源: http://www.phperz.com/article/17/0815/344289.html