在平时的运维工作中,我们运维人员需要清楚自己网站每天的总访问量、总带宽、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访问了、

最新文章

  1. OpenCV学习笔记(一)——OpenCV3.1.0+VS2015开发环境配置
  2. 内置对象session ,cookic,Application,ViewState
  3. spice命令使用
  4. GridView控件隐藏列
  5. 解决CentOS6.4 Docker "Couldn't connect to Docker daemon ..." 问题
  6. 一个发光的搜索边框(纯CSS3)
  7. JBPM4之decision节点:2、好学生|坏学生|超级学生
  8. NHibernate分页
  9. 网站开发常用jQuery插件总结(13)定位插件scrollto
  10. Delphi keydown与keyup、keypress的区别(KeyDown 和KeyUp 通常可以捕获键盘除了PrScrn所有按键)
  11. 启动tomcat的时候,服务器暂停到装载mysql驱动文件的原因
  12. Asycn/Await 异步编程初窥
  13. 如何在ASP.NET Core Web API测试中使用Postman
  14. go-mysql: database/sql 接口适配
  15. bootstrapvalidator的简单校验【必填校验、长度校验、是否存在校验(remote)】
  16. C++ static 静态变量&静态成员函数
  17. Linux之chgrp
  18. RichEdit选中文字右键菜单的实现
  19. ThinkPHP子类继承Controller类的注意事项
  20. 8.2、常用模块介绍2:xml,configparser,hashlib

热门文章

  1. [leetcode-543-Diameter of Binary Tree]
  2. 【项目1-1】使用HTML5+CSS3绘制HTML5的logo
  3. 开源分享,使用Servlet实现360商城
  4. GridView七十二绝技-大全(收藏版)(转至别人博客)
  5. React Image加载图片过大导致ListView滑动卡顿
  6. angular.extend、angular.$watch、angular.bootstrap
  7. Oracle数据迁移笔记-Rownum与序列的自增长的组合用法技巧
  8. Akka(13): 分布式运算:Cluster-Sharding-运算的集群分片
  9. Android项目导入工程Module
  10. hdu_1907:John(Nim变形)