经过Nginx日志,能够简单分析WEB网站的运行状态、数据报表、IP、UV(unique visitor指独立访客访问数,一台电脑终端为一个访客。)、PV(page view即页面访问量,每打开一次页面PV计数+1,刷新页面也是)访问量等需求,以下为经常使用需求分析:
(1) 统计Nginx服务器独立IP数。
awk '{print $1}' access.log |sort -r|uniq -c | wc -l
(2) 统计Nginx服务器总PV量。
awk '{print $7}' access.log |wc -l
(3) 统计Nginx服务器UV统计。
awk '{print $11}' access.log |sort -r|uniq -c |wc -l
(4) 分析Nginx访问日志截止目前为止访问量前20的IP列表。
awk '{print $1}' access.log|sort |uniq -c |sort -nr |head -20
(5) 分析Nginx访问日志早上9点至中午12点的总请求量。
sed -n "/2016:09:00/,/2016:12:00/"p access.log
awk '/2017:09:00/,/2017:12:00/' access.log|wc –l
(9) 分析Nginx访问日志状态码40四、50二、50三、500、499等错误信息页面,打印错误出现次数大于20的IP地址。
awk '{if ($9~/502|499|500|503|404/) print $1,$9}' access.log|sort|uniq –c|sort –nr | awk '{if($1>20) print $2}'
(10) 分析Nginx访问日志访问最多的页面。
awk '{print \(7}' access.log |sort |uniq -c|sort -nr|head -20 (11) 分析Nginx访问日志请求处理时间大于5秒的URL,并打印出时间、URL、访客IP。 awk '{if (\)NF>5) print $NF,$7,$1}' access.log|sort -nr|more
新增匹配案例c++
1.首先定义日志格式:
'$remote_addr - \(remote_user [\)time_local] "$request" $status \(body_bytes_sent " \)http_referer" "\(http_user_agent" "\)http_x_forwarded_for"'
统计访问 IP 次数:数组
统计访问访问大于 100 次的 IP:服务器
统计访问 IP 次数并排序取前 10:网站
统计时间段访问最多的 IP:spa
统计上一分钟访问量:
date=$(date -d '-1 minute' +%d/%b/%Y:%H:%M)日志
统计访问最多的 10 个页面:排序
统计每一个 URL 数量和返回内容总大小:ssl
统计每一个 IP 访问状态码数量:rem
统计访问 IP 是 404 状态的次数:
awk '{if ($9~/404/)a[$1" "$9]++}END{for(i in a)print i,a[i]}' access.logit
grep '2019-10-30 18:0[0-9]' info.log