在平时的运维工作中,我们运维人员需要清楚自己网站每天的总访问量、总带宽、ip统计和url统计等。
虽然网站已经在服务商那里做了CDN加速,所以网站流量压力都在前方CDN层了
像每日PV,带宽,ip统计等数据也都可以在他们后台里查看到的。
可以结合crontab计划任务,每天给你的邮箱发送一个统计报告~【前提是本机已安装邮件服务并启动】
脚本统计了:
1)总访问量
2)总带宽
3)独立访客量
4)访问IP统计
5)访问url统计
6)来源统计
7)404统计
8)搜索引擎访问统计(谷歌,百度)
9)搜索引擎来源统计(谷歌,百度)
#!/bin/bash
log_path=/usr/local/nginx/logs/access.log
domain=
"www.qyj.com"
email=
"15221024542@163.com"
maketime=`
date
+%Y-%m-%d
" "
%H
":"
%M`
logdate=`
date
-d
"yesterday"
+%Y-%m-%d`
total_visit=`
wc
-l ${log_path} |
awk
'{print $1}'
`
total_bandwidth=`
awk
-
v
total=0
'{total+=$10}END{print total/1024/1024}'
${log_path}`
total_unique=`
awk
'{ip[$1]++}END{print asort(ip)}'
${log_path}`
ip_pv=`
awk
'{ip[$1]++}END{for (k in ip){print ip[k],k}}'
${log_path} |
sort
-rn |
head
-20`
url_num=`
awk
'{url[$7]++}END{for (k in url){print url[k],k}}'
${log_path} |
sort
-rn |
head
-20`
referer=`
awk
-
v
domain=$domain
'$11 !~ /http:\/\/[^/]*'
"$domain"
'/{url[$11]++}END{for (k in url){print url[k],k}}'
${log_path} |
sort
-rn |
head
-20`
notfound=`
awk
'$9 == 404 {url[$7]++}END{for (k in url){print url[k],k}}'
${log_path} |
sort
-rn |
head
-20`
spider=`
awk
-F
'"'
'$6 ~ /Baiduspider/ {spider["baiduspider"]++} $6 ~ /Googlebot/ {spider["googlebot"]++}END{for (k in spider){print k,spider[k]}}'
${log_path}`
search=`
awk
-F
'"'
'$4 ~ /http:\/\/www\.baidu\.com/ {search["baidu_search"]++} $4 ~ /http:\/\/www\.google\.com/ {search["google_search"]++}END{for (k in search){print k,search[k]}}'
${log_path}`
echo
-e
"概况\n报告生成时间:${maketime}\n总访问量:${total_visit}\n总带宽:${total_bandwidth}M\n独立访客:${total_unique}\n\n访问IP统计\n${ip_pv}\n\n访问url统计\n${url_num}\n\n来源页面统计\n${referer}\n\n404统计\n${notfound}\n\n蜘蛛统计\n${spider}\n\n搜索引擎来源统计\n${search}"
| mail -s
"$domain $logdate log statistics"
${email}
结合计划任务就可以看到每天的访问量以及独立ip访问了、