在平時的運維工做中,咱們運維人員須要清楚本身網站天天的總訪問量、總帶寬、ip統計和url統計等。
雖然網站已經在服務商那裏作了CDN加速,因此網站流量壓力都在前方CDN層了
像每日PV,帶寬,ip統計等數據也均可以在他們後臺裏查看到的。nginx
能夠結合crontab計劃任務,天天給你的郵箱發送一個統計報告~【前提是本機已安裝郵件服務並啓動】
腳本統計了:
1)總訪問量
2)總帶寬
3)獨立訪客量
4)訪問IP統計
5)訪問url統計
6)來源統計
7)404統計
8)搜索引擎訪問統計(谷歌,百度)
9)搜索引擎來源統計(谷歌,百度)bash
#!/bin/bash
運維
log_path=/usr/local/nginx/logs/access.log
domain=
"www.qyj.com"
email=
"15221024542@139.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主機:${host}\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}